home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 1 / PC World Interactive 1 - Nisan 1997.iso / nostalji / bbs / faq / tcp-faq1.txt < prev    next >
Text File  |  1994-09-19  |  88KB  |  2,600 lines

  1. Newsgroups: comp.protocols.tcp-ip.ibmpc,comp.protocols.tcp-ip,alt.winsock,comp.os.ms-windows.networking.tcp-ip,comp.answers,news.answers
  2. Path: bloom-beacon.mit.edu!hookup!swrinde!ihnp4.ucsd.edu!library.ucla.edu!csulb.edu!csus.edu!netcom.com!aboba
  3. From: aboba@netcom.com (Bernard Aboba)
  4. Subject: comp.protocols.tcp-ip.ibmpc Frequently Asked Questions (FAQ), part 1 of 3
  5. Message-ID: <abobaCtGp96.3I@netcom.com>
  6. Followup-To: poster
  7. Summary: Frequently Asked Questions (and answers) about TCP/IP on    
  8.                    PC-Compatible Computers 
  9. Keywords: TCP/IP, IBM PC, SLIP, PPP, NDIS, ODI
  10. Sender: aboba@netcom.com (Bernard Aboba)
  11. Reply-To: aboba@netcom.com
  12. Organization: MailCom
  13. Date: Sun, 24 Jul 1994 20:36:41 GMT
  14. Approved: news-answers-request@MIT.Edu
  15. Expires: Fri, 2 Sep 1994 00:00:00 GMT
  16. Lines: 2581
  17. Xref: bloom-beacon.mit.edu comp.protocols.tcp-ip.ibmpc:17971 comp.protocols.tcp-ip:11697 alt.winsock:11606 comp.os.ms-windows.networking.tcp-ip:2483 comp.answers:6432 news.answers:22977
  18.  
  19. Archive-name: ibmpc-tcp-ip-faq/part1
  20.  
  21. comp.protocols.tcp-ip.ibmpc:
  22. FAQ Posting, part 1, 8/1/94
  23.  
  24. #################  Legalese #################
  25.  
  26. This document is Copyright (C) 1993,1994 by Bernard Aboba, except where 
  27. the copyright is retained by the original author(s). This document
  28. may be distributed non-commercially, provided that it is not
  29. modified in any way. However, no part of this publication may be 
  30. sold or packaged with a product for sale in any form without the 
  31. prior written permission of Bernard Aboba. 
  32.  
  33. This FAQ is presented with no warranties or guarantees of ANY KIND
  34. including correctness or fitness for any particular purpose. The
  35. author(s) of this document have attempted to verify correctness of the
  36. data contained herein; however, slip-ups can and do happen.  If you use
  37. this data, you do so at your own risk. While we make every effort to
  38. keep this FAQ up to date, we cannot guarantee that it is, and we will
  39. not be responsible for any damages resulting from the use of the information
  40. or software referred to herein. 
  41.  
  42. Unless otherwise stated, the views expressed herein are my own.  Last
  43. time I looked, I had not been appointed official spokesperson of any
  44. of the following:
  45.  
  46.     The Planet Earth
  47.     The U.S.Government
  48.     The State of California (not so good)
  49.     The University of California, Berkeley
  50.     The City of Berkeley (bringing you Riot of the Week(SM))
  51.         Addison-Wesley
  52.         Publisher's Group West
  53.     Any major or minor breakfast cereal (not even oatmeal!)
  54.     
  55. This FAQ will be posted monthly. In between it will be
  56. available as: 
  57. file://ftp.netcom.com/pub/mailcom/IBMTCP/ibmtcp.zip
  58.  
  59. ################# HTML version goes online #################
  60.  
  61. This FAQ is now fully HTML compatible, and is
  62. being automatically converted to HTML. 
  63. This means that if you have a WWW browser, 
  64. you can read the FAQ online, and click on links 
  65. to download individual files. 
  66.  
  67. This is how I read the FAQ myself, and it is
  68. highly recommended. To get at the HTML
  69. version, use:
  70. http://www.zilker.net/users/internaut/forth.html#upd
  71.  
  72. ################# Citation entry  #################
  73.  
  74. This FAQ may be cited as:
  75.  
  76.   Aboba, Bernard D.(1994) "comp.protocols.tcp-ip.ibmpc Frequently
  77.   Asked Questions (FAQ)" Usenet news.answers, available via 
  78.   file://ftp.netcom.com/pub/mailcom/IBMTCP/ibmtcp.zip, 
  79.   57 pages.
  80.  
  81. ################# Change History  #################
  82.  
  83. Changes from 7/1/93 posting:
  84. FAQ now available in HTML format. Entries
  85. changed in last two FAQs sport a *. 
  86.  
  87.  
  88. ################# Related FAQs #################
  89.  
  90. There is a FAQ available on features of TCP/IP
  91. Packages for DOS and Windows. This is available at:
  92. file://ftp.cac.psu.edu/pub/dos/info/tcpip.packages. 
  93.  
  94. The Windows Sockets Faq is posted to alt.winsock, and
  95. is available at:
  96. ftp://SunSite.UNC.EDU/pub/micro/pc-stuff/ms-windows/winsock/FAQ
  97.  
  98. The PC-NFS FAQ is available at:
  99. file://seagull.rtd.com/pub/tcpip/pcnfs.FAQ.v1.4.Z or pcnfsfaq.zip
  100. file://ftp.york.ac.uk/pub/FAQ/pcnfs.FAQ
  101.  
  102. The SNMP FAQ is regularly posted to comp.protocols.snmp
  103.  
  104. The TCP/IP FAQ is posted to comp.protocols.tcp-ip, and is
  105. maintained by mailto:gnn@netcom.com. 
  106.  
  107. The "How To Get It" FAQ on the Crynwr packet driver 
  108. collection is irregularly posted to comp.protocols.tcp-ip.ibmpc
  109. by Russ Nelson, mailto:nelson@crynwr.com. 
  110.  
  111.  
  112. ################# Book info  #################
  113.  
  114. A bunch of you have requested information on the
  115. book I am working on.  Here is the basic info:
  116.  
  117. Title: The PC-Internet Connection, TCP/IP
  118. Networking for DOS and Windows
  119. Authors: Bernard Aboba and Britt Bassett
  120. Pages: 800 (estimated), 7" by 9"
  121. Distributor: Publisher's Group West
  122. ISBN: 1-883979-00-5
  123. Price: $32.95 (est), includes Chameleon Sampler
  124. software, WS-Gopher, PC-Eudora. 
  125. Estimated release: October, 1994
  126.  
  127. To look at sample chapters from the book, check out
  128. the following WWW page:  
  129. http://www.zilker.net/users/internaut/forth.html
  130.  
  131. For those of in North America who *must* have 
  132. a look at the book before it comes out, and are 
  133. willing to comment on it, send me $25 to cover 
  134. copying and postage, and I'll send you a copy. 
  135. If you send back comments, I'll return the $25.
  136. Since this is a big book, be prepared to spend 
  137. some time looking at it.    
  138.  
  139. For those outside North America, sorry but we're on
  140. a tight deadline, and so we will not be able to
  141. include you. 
  142.  
  143.  
  144. ################# EXAMPLE CONFIG FILES  #################
  145.  
  146. Many thanks to Dave Fetrow (fetrow@biostat.washington.edu)
  147. for creating an archive of setup files. The archive is 
  148. particularly oriented toward sets of applications that 
  149. are somewhat tricky, such as combinations involving 
  150. different driver sets, mixtures of NetWare, TCP/IP, 
  151. and W4WG, etc. 
  152.  
  153. Please include not only the setup and configuration files
  154. but some directions. Comments included with the setup files
  155. are highly desirable. The files can include your name if you
  156. desire. 
  157.  
  158. Please mail submissions to ftp@ftp.biostat.washington.edu. 
  159.  
  160. The archive itself is located at:
  161. ftp://ftp.biostat.washington.edu/ftp/pub/msdos/network.setups 
  162.  
  163. Late breaking development: the archive has crashed, and 
  164. files have been lost. 
  165.  
  166.  
  167.  
  168. TABLE OF CONTENTS
  169.  
  170. A. Components of a TCP/IP solution
  171.  
  172. A-1. What do I need to run TCP/IP on the PC?
  173. A-2. What are packet drivers?  Where do I get them?
  174. A-3. What is Winsock?  Where can I get it? 
  175. A-4. What is Trumpet Winsock? How do I get it to dial? 
  176. A-5. What publicly distributable TCP/IP applications are there
  177.      for DOS?  Windows?
  178. A-6. What software is available for doing SLIP?  Compressed SLIP?
  179.      PPP?  For DOS?  For Windows?
  180. A-7. What about the software included with various books? 
  181. A-8. What diagnostic utilities are available to find problems with
  182.      my connection?  Where can I get them?
  183. A-9. Is there a CD-ROM with the software included in this FAQ? 
  184. A-10. Does Windows NT support SLIP? PPP? 
  185. A-11. Where can I take a peak at the WFW v3.11 VxD beta?
  186. A-12. How do I get my BBS to run over TCP/IP? 
  187. A-13. Are there graphical TCP/IP servers out there?
  188. A-14. What methods of dynamic address assignment are available?
  189. A-15. How can I set up PPP server on a UNIX host? 
  190. A-16. What is WinSNMP? 
  191.  
  192. B. Questions about drivers
  193.  
  194. B-1. What do I need to know before setting up SLIP or PPP?
  195. B-2. How do I configure SLIPDISK?
  196. B-3. How do I install packet drivers for Windows applications?
  197. B-4. When do I need to install  WINPKT? 
  198. B-5. How to do I run both WinQVT and ODI?
  199. B-6. Is it possible to use BOOTP over SLIP?
  200. B-7. How do SLIP drivers work? 
  201. B-8. When do I need to install PKTMUX?
  202. B-9. Can NDIS be used underneath multiple protocol stacks of the same type?
  203. B-10. Is there an NDIS over packet driver shim? 
  204. B-11. How do I run NetBIOS over TCP/IP? 
  205. B-12. How do I run NFS and another TCP/IP application?
  206. B-13. How do I run Trumpet Winsock along with KA9Q or NFS? 
  207. B-14. Sample Stick Diagrams
  208. B-15. Strange and wonderful configuration files submitted by readers
  209.  
  210. C. KA9Q Questions
  211.  
  212. C-1.  What version of KA9Q should I use and where do I get it?
  213. C-2.  What do I need to run KA9Q? Why won't it do VT-100 emulation?
  214. C-3.  How do I configure KA9Q as a SLIP dialup connection?
  215. C-4.  How do I configure KA9Q as a router?
  216. C-5.  How do I get KA9Q to support BOOTP?
  217. C-6.  How do I get KA9Q to support PPP?
  218. C-7.  How do I get KA9Q to support SLIP dialin?
  219. C-8.  Can I use KA9Q as a packet filter? 
  220.  
  221.  
  222. D. Hints for particular packages
  223.  
  224. D-1. How do I get DesQView X to run over the network?
  225. D-2. Why is NFS so slow compared with FTP?
  226. D-3. Where can I get information on running NetWare and TCP/IP
  227.       concurrently? 
  228. D-4. What NetWare TCP/IP NLMs are out there and how do I get them
  229.       to work? 
  230. D-5. How do I get a telecom package supporting Int 14h redirection
  231.       to work? 
  232. D-6. How do I run SLIP/PPP with Windows For Workgroups TCP/IP?
  233. D-7. How do I get Windows For Workgroups to work alongside NetWare?
  234. D-9. How come package X doesn't support the AppleTalk packet driver?
  235. D-10. NCSA Telnet doesn't reassemble fragments. What should I do?
  236.  
  237.  
  238. E. Information for developers
  239.  
  240. E-1. What publicly distributable TCP/IP stacks are there that I can
  241.      use to develop my own applications?
  242. E-2. Where can I get a copy of the Windows Sockets FAQ?
  243.  
  244.  
  245. --------------------- FAQ Begins Here ---------------------------
  246.  
  247. A. Components of a TCP/IP solution
  248.  
  249. A-1. What do I need to run TCP/IP on the PC?
  250.  
  251. To run TCP/IP on the PC you will need:
  252.  
  253. * Appropriate hardware, such as:
  254.  
  255.     Ethernet card
  256.     Token Ring card
  257.     AppleTalk card
  258.     Serial Port
  259.    
  260.  
  261.   Any other network card with a packet driver or NDIS or ODI driver,
  262.   (such as Arcnet), will also work.  If your card supports NetBIOS,
  263.   this is also acceptable, since you can run a packet-driver-over-
  264.   NetBIOS shim.
  265.  
  266. * Drivers for your hardware.
  267.  
  268.   Your card probably came with one or more of the following drivers:
  269.  
  270.     Network Device Interface Specification (NDIS) drivers
  271.       [spec. by 3Com and Microsoft, used by LAN Manager, Windows
  272.       for Workgroups, and Windows NT. LAN Manager uses NDIS 2.0,
  273.       Windows NT uses 3.0, and WFW supports 2.0 and will support 
  274.       3.0]
  275.     ODI Drivers [spec. by Novell, abbreviation for Open DataLink
  276.       Interface]
  277.     Packet Drivers [spec. by FTP Software]
  278.    
  279.   TCP/IP stacks have been written for each of these driver interfaces, 
  280.   so the important thing is whether your chosen stack is compatible 
  281.   with the interface available for your card.
  282.  
  283.   A shim is software that runs on top of one set of drivers to
  284.   provide an interface equivalent to another set. This is useful,
  285.   for example,if you are looking to run software requiring an
  286.   NDIS driver(such as Chameleon NFS) alongside software
  287.   requiring a packet driver interface (such as KA9Q, Gopher, Popmail,
  288.   NCSA Telnet, etc.), or run software intended for, say, a packet
  289.   driver over an NDIS driver instead.
  290.  
  291.   Shims are available to run packet drivers over NetBIOS, ODI,
  292.   or NDIS, in order to run software expecting a packet driver over
  293.   NDIS, ODI, or NetBIOS instead. There are also shims to run NDIS
  294.   over ODI (ODINSUP), and ODI over Packet Drivers (PDETHER). 
  295.  
  296.  
  297. * A TCP/IP protocol stack.
  298.  
  299.   The TCP/IP protocol stack runs on top of the driver software, and
  300.   uses it to access your hardware. If you are running a TCP/IP
  301.   protocol stack that requires drivers that aren't available for your
  302.   hardware, you're in trouble. Check into this before purchasing!
  303.  
  304.  
  305. * If running Windows applications that require it, WINSOCK.DLL. 
  306.  
  307.  
  308.   Windows Sockets is a sockets interface which was created as a 
  309.   Windows DLL. Each  TCP/IP implementation requires its own version 
  310.   of Windows Sockets. Trumpet Winsock and VxDTCP are the only
  311.   two publicly distributable Windows Sockets implementations. 
  312.   WINSOCK.DLL provides 16-bit support; WSOCK32.DLL provides 32-bit support. 
  313.  
  314.    
  315. * Applications software.
  316.  
  317.   Although most of us in this newsgroup seem to spend our time
  318.   looking for working combinations of applications,WINSOCK.DLLs,
  319.   Windows Sockets compliant TCP/IP implementations, shims, 
  320.   drivers, and hardware, ultimately your goal is eventually to 
  321.   run an application successfully. If and when that happens, 
  322.   please send me a note, so I can add it to this FAQ.
  323.  
  324.  
  325. A-2. What are packet drivers?  Where do I get them?
  326.  
  327. Packet drivers provide a software interface that is independent of the  
  328. interface card you are using, but NOT independent of the particular 
  329. network technology. As Frances K. Selkirk (fks@vaxeline.ftp.com) notes:
  330.  
  331. "That's one reason they're easier to write than ODI drivers! If you
  332. write a class three (802.5 Token Ring) driver, you will need to use
  333. software that expects a class three driver, not software that expects
  334. a class 1 (DIX ethernet) driver. There are a few drivers that fake class 1. 
  335.  
  336. I believe only class 1 and class 6 (SLIP) drivers are supported by 
  337. freeware packages."
  338.  
  339. The chances are fair that your Ethernet card came with a packet
  340. driver, and if so, you should try that first. If not, then you
  341. can try one of the drivers from the Crynwr collection (formerly
  342. called the Clarkson Drivers). See the Resource listing for info.
  343.  
  344. For 3COM drivers, try ftp ftp.3com.com. For technical information,
  345. try info@3com.com. For marketing and product info, try
  346. leads@hq.3mail.3com.com.The packet driver specification is available
  347. from vax.ftp.com in packet-d.ascii
  348.  
  349. The following vendors have packet drivers with source available for
  350. their pocket lan adaptors:
  351.  
  352. D-Link - +1-714-455-1688
  353. Solectek - +1-619-450-1220
  354. Accton - +1-415-266-9800
  355. Compulan - +1-408-922-6888
  356. (soon Kodiak's Noteport - +1-408-441-6900)
  357.  
  358. You can obtain a complete library of packet drivers from many of the
  359. Simtel20 mirror sites, including:
  360. file://oak.oakland.edu/pub/msdos/pktdrvr/pktd11.zip, 
  361. file://oak.oakland.edu/pub/msdos/pktdrvr/pktd11c.zip. 
  362.  
  363.  
  364. A-3. What is Windows Sockets?  Where can I get it?
  365.  
  366.   The idea for Windows Sockets was born at Fall Interop '91, during a
  367.   Birds of a Feather session.  
  368.  
  369.   From the Windows Sockets specification:
  370.   [courtesy of Mark Towfiq, mailto:towfiq@Microdyne.COM]:
  371.  
  372.  
  373.     The Windows Sockets Specification is intended to provide a
  374.     single API to which application developers can program and
  375.     multiple network software vendors can conform. Furthermore, in
  376.     the context of a particular version of Microsoft Windows, it
  377.     defines a binary interface (ABI) such that an application
  378.     written to the Windows Sockets API can work with a conformant
  379.     protocol implementation from any network software vendor.
  380.  
  381. Windows Sockets will be supported by Windows, Windows for Workgroups,
  382. Win32s, and Windows NT. It will also support protocols other than TCP/IP.
  383. Under Windows NT, Microsoft will provides Windows Sockets support over
  384. TCP/IP and IPX/SPX. DEC will be implementing DECNet. Windows NT will 
  385. include mechanisms for multiple protocol support in Windows Sockets, 
  386. both 32-bit and 16-bit.
  387.  
  388. Mark Towfiq writes:
  389.  
  390.     "Files and information related to the Windows Sockets API are
  391.      available via ftp://sunsite.unc.edu/pub/micro/pc-stuff/ms-windows/winsock, 
  392.      which is a mirror of /pub/winsock on Microdyne.COM (SunSite has a much
  393.      faster connection to the Internet, so you are advised to use
  394.      that).
  395.  
  396.      If you do not have FTP access to the Internet, send a message
  397.      with the word "help" in the body to either
  398.      mailto:ftpmail@SunSite.UNC.Edu, or mailto:ftpmail@DECWRL.DEC.Com, to obtain
  399.      information about the FTP to Mail service there."
  400.  
  401.   Alternative sources for the Windows Sockets specification include
  402.   rhino.microsoft.com (an FTP server running NT), as well as the
  403.   Microsoft forum on CompuServe (go msl).
  404.   
  405.   Currently NetManage (NEWT), Distinct, Spry, FTP and Frontier are shipping
  406.   Winsock TCP/IP stacks, as is Microsoft (Windows NT and TCP/IP for
  407.   WFW), Beame & Whiteside Software (v1.1 compliant), and Sun PC-NFS. 
  408.   If you are looking for a Winsock.dll, you should first contact your TCP/IP
  409.   stack vendor. Novell has one in beta for their Lan Workplace for DOS.
  410.  
  411. A-4 What is Trumpet Winsock? How can I get it to dial? 
  412.  
  413. Peter Tattam has released a shareware Windows Sockets compliant
  414.   TCP/IP stack. You can obtain it via    
  415.   file://ftp.utas.edu.au/pc/trumpet/winsock/winsock.zip, 
  416.   file://ftp.utas.edu.au/pc/trumpet/winsock/winsock.zipwinapps.zip, or
  417.   file://biochemistry.bioc.cwru.edu/pub/trumpwsk/winsock.zip.   
  418.   
  419. The first thing to do after you download WINSOCK.ZIP is to create
  420. a directory for Trumpet Winsock, such as C:/TRUMPWSK, and put it
  421. in your DOS PATH statement. 
  422.  
  423. Trumpet Winsock operates over packet drivers, or over a serial port
  424. using its own built-in SLIP/CSLIP. If you are using a network
  425. adapter, this means that you will have to locate a packet driver
  426. for your adapter, and load it. Trumpet Winsock also comes with 
  427. WINPKT, and this is loaded next, via the command
  428. WINPKT.COM 0x60 [or whatever the software interrupt for your packet driver]
  429.  
  430. You will then enter Windows, and create a group in the Program Manager
  431. for all the files that come with Trumpet Winsock. The stack itself is loaded
  432. by executing TCPMAN. Applications that come with it include WinCHAT, 
  433. a chatting program; PINGW, a ping utility; FTPW for FTP, WINARCH for Archie. 
  434.  
  435. When you first execute TCPMAN, you will be asked to fill out the setup 
  436. information for the stack. Select whether you will be using a network
  437. adapter or SLIP; you cannot use both. 
  438.  
  439. Since Trumpet Winsock does not yet support PPP, you will need to load the
  440. EtherPPP driver and WINPKT prior to running Windows. EtherPPP is available via
  441. file://merit.edu/pub/ppp/etherppp.zip. This is an Ethernet simulation driver, so you
  442. will configure Trumpet Winsock as though it were running over an Ethernet
  443. Packet driver, i.e. by loading WINPKT 0x60, and setting the packet driver
  444. vector in TCPMAN to 60. 
  445.  
  446. EtherPPP comes with its own dialer, so you will need to create a dialing script.
  447. If your TCP/IP address will be changing, you will also need to write a little
  448. batch script to capture the assigned IP address, and insert it into Trumpet's
  449. initialization file.  EtherPPP takes up too much RAM (121K), but otherwise
  450. works fine.  
  451.  
  452. If for some reason you don't like Trumpet Winsock's scripting language, 
  453. you can use any other comm program that doesn't drop carrier on exit, or 
  454. the DIALER program, available via: 
  455.  
  456. file://ftp.cica.indiana.edu/pub/pc/win3/util/dialexe.zip. 
  457.  
  458. As for Trumpet Winsock's built-in scripting language, the default dialout
  459. script is LOGIN.CMD. A sample LOGIN.CMD file from Geoff Cox (mailto:geoff@satro.demon.co.uk):
  460.  
  461. #
  462. # initialize modem
  463. #
  464. output atzm0\13
  465. input 10 OK
  466. #
  467. # set modem to indicate DCD
  468. #
  469. output at&d2&c1\13
  470. input 10 OK\n
  471. #
  472. # send phone number
  473. #
  474. output atdt0813434848\r
  475. #
  476. # my other number
  477. #
  478. #output atdt241644\13
  479. #
  480. # now we are connected.
  481. #
  482. #input 30 CONNECT
  483. #
  484. #  wait till it's safe to send because some modem's hang up
  485. #  if you transmit during the connection phase
  486. #
  487. #wait 30 dcd
  488. #
  489. # now prod the terminal server
  490. #
  491. #output \13
  492. #
  493. #  wait for the username prompt
  494. #
  495. input 30 ogin:
  496. username Enter your username
  497. output \satro\r
  498. #
  499. # and the password
  500. #
  501. input 30 assword:
  502. password Enter your password
  503. output \my password\r
  504. #
  505. # we are now logged in
  506. #
  507. input 30 otocol:
  508. #
  509. # see who on for informational reasons.
  510. #
  511. output SLIP\r
  512. input 30 HELLO
  513.  
  514.  
  515. A-5. What publicly distributable TCP/IP applications are there for
  516.      DOS?  Windows?
  517.  
  518. Right now there are a wealth of publicly distributable TCP/IP
  519. applications running under DOS.  Windows also has a wealth of 
  520. programs available, including implementations of Gopher, Mail
  521. (POP3/SMTP), FSP, Mosaic, Telnet, FTP, IRC, and WAIS. 
  522.  
  523. See the Resource listings for information.
  524.  
  525.  
  526. A-6. What software is available for doing SLIP?  Compressed SLIP?
  527.      PPP?  For DOS?  For Windows?  For OS/2?
  528.  
  529. For SLIP or CSLIP use with DOS, I recommend using SLIPPER or CSLIPPER. 
  530. These are packet drivers that can be used along with a dialer. For PPP, 
  531. I recommend the EtherPPP packet driver described above.  
  532.  
  533. There is a special version of NCSA Telnet for PPP, available from
  534. ftp://merit.edu/pub/ppp. 
  535.  
  536. KA9Q supports SLIP/CSLIP, but unfortunately can not be used as a
  537. TCP/IP protocol stack to run other apps.
  538.  
  539. I have heard good things about IBM's TCP/IP for OS/2, but haven't
  540. used it msyelf. Please see the FAQ from news:comp.os.os2.networking for details.
  541.  
  542. IBM, FTP Software, Beame & Whiteside, Frontier, SPRY and Netmanage also 
  543. offer SLIP support in their products. See the resource listings for details.  
  544.  
  545.  
  546. A-7. What about the software included with various books?
  547.  
  548. The software included with various books (including mine) is usually
  549. Chameleon Sampler from NetManage. Sampler supports SLIP/CSLIP/PPP, but
  550. not connection over a network, and includes software for FTP, Telnet,
  551. TN3270, and Mail. The stack included with Sampler (NEWT) is Winsock
  552. compatible, so you can run any Windows Sockets-compatible application
  553. over it. Installation is quite a bit simpler compared with going the
  554. Trumpet Winsock route, so this is probably the best way to go assuming
  555. that you are a dialup IP user. 
  556.  
  557.  
  558. A-8. What diagnostic utilities are available to find problems with
  559. my connection?  Where can I get them?
  560.  
  561. Frequently used diagnostic utilities include ifconfig (checks the
  562. configuration of the network interfaces), ping (tests IP layer
  563. connectivity), traceroute (traces the route that a packet takes
  564. between two sites), netstat (checks the routing table), tcpdump
  565. (protocol analyzer), arp (looks at the IP to Ethernet address
  566. mappings).
  567.  
  568. KA9Q includes ifconfig, ping and traceroute functions. In KA9Q hop
  569. check is the equivalent of traceroute. The Trumpet TCP/IP stack also
  570. has a hopchk2 command that is a traceroute equivalent.
  571.  
  572. Etherload is very useful for network profiling, while Etherdump can
  573. be used for packet catching, although I wish it would give more
  574. information, along the lines of TCPDUMP.  
  575.  
  576. Trumpet Winsock comes with Windows implementations of Ping and Traceroute. 
  577.  
  578. A-9. Is there a CD-ROM with the software included in this FAQ?
  579.  
  580. The Packet Driver, WinSock & TCP/IP CD-ROM is available from
  581. CDPublishing for $29.95. This includes the packet drivers of course,
  582. but also lots of other DOS and Windows TCP/IP stuff, including
  583. Windows Sockets applications. It also includes the text of all
  584. the RFCs. This is now somewhat out of date (it was cut in
  585. December), but is otherwise highly recommended. 
  586.  
  587. CDPublishing, (604)874-1430, (800)333-7565, fax: (604)874-1431,
  588. mailto:info@CDPublishing.com, ftp://ftp.CDPublishing.com/,
  589. Gopher site: gopher://gopher.CDPublishing.com/, WWW: http://www.CDPublishing.com/
  590.  
  591. A-10. Does Windows NT support SLIP? PPP? 
  592.  
  593. The "Daytona" release of Windows NT will include support for 
  594. PPP (client and server) and SLIP (client), both including
  595. support for Van Jacobson header compression. 
  596.  
  597. A-11. Where can I take a peak at the WFW v3.11 VxD beta?
  598.  
  599. This is a beta release of the forthcoming 32 bit-TCP/IP stack for 
  600. Windows for Workgroups v3.11. This is looking *very* good; it's
  601. fast, and has worked fine for me. It also supports a host of very
  602. nice new features, including DHCP automatic configuration, WINS
  603. name resolution, and Windows Sockets v1.1. However, plesae not that
  604. it does not offer SLIP or PPP support. 
  605. The final beta release is now available via:
  606. ftp://ftp.microsoft.com/PerOpSys/WFW/tcpip/ 
  607.  
  608.  
  609. A-12. How do I get my BBS to run over TCP/IP? 
  610.  
  611. First off, let's clarify what we mean by "over TCP/IP." Usually
  612. this means "accessible via Telnet." Be aware that doing this will
  613. not necessarily work well, since few BBSes have been tested running
  614. over TCP/IP. As a result you may experience frequent crashes, or
  615. abominable transfer rates. For example, I have seen transfer rates 
  616. as low as 100 characters/second over a 14.4 Kbps PPP connection 
  617. which routinely supports 1600 cps transfers with FTP.
  618.  
  619. This situation might be improved by running an FTP server instead. 
  620. This could be accomplished for example by running KA9Q in another
  621. window under DesQView, or by putting the files on an NFS-mounted
  622. drive, then using another machine as the FTP server. 
  623.  
  624. One way to hook up a multi-line BBS is to use a terminal server, 
  625. and hook up the BBS's serial ports to that. The disadvantage of this is that
  626. if your BBS is really big you will need multiple terminal servers
  627. which will each have their own domain names and TCP/IP addresses. 
  628. Confusing. 
  629.  
  630. Brian Clements of Murkworks has a better solution, called BBSnet. 
  631. It provides a Telnet interface that looks like a FOSSIL driver.  The first
  632. version runs partly as an NLM; some of the code resides on the server.
  633. For info, contact 
  634.  
  635. BBSnet,MurkWorks, Inc., P.O. Box 631,Potsdam, NY 13676, 
  636. +1 315 265 4717, mailto:info@MurkWorks.com
  637.  
  638. eSoft has also recently announced that they are working on a TCP/IP
  639. compatible version of TBBS. Look for this to be shown at OneBBS
  640. Con '94 in Atlanta. 
  641.  
  642. A-13. Are there graphical servers out there?
  643.  
  644. Yes! For Windows there is a graphical SMTP daemon which is not very
  645. functional (it can't do as much as KA9Q); several Web servers, including
  646. a Windows version of NCSA's HTTP, and SerWeb. 
  647.  
  648. For Windows NT, The European Microsoft Windows Academic Consortium (EMWAC) has
  649. released Windows NT servers for Gopher, WAIS, and WWW. These servers
  650. are easy to install, and fast, and offer the full complement of capabilities,
  651. including support for forms, access to WAIS indices from within HTTPS, 
  652. installation as a Windows NT service, etc. 
  653.  
  654. See the resource section for details.
  655.  
  656. A-14. What methods of address assignment are available?
  657.  
  658. Methods of address assignment include client/server protocols
  659. (RARP, BOOTP, DHCP), as well as script-based methods 
  660. (terminal server indicates, "your address is 192.187.147.2"). PPP
  661. supports assignment of addresses from the server. 
  662.  
  663. As part 2 of this FAQ discusses, there are RARP and BOOTP clients
  664. and servers available for DOS. Typically the clients work by stashing
  665. the IP address in a DOS environmental variable. It is then your responsibility 
  666. to modify the appropriate config files to reflect this 
  667. address. This can be done using a DOS batch script and a utility such as 
  668. DOS awk. This same approach can be used to modify config files when using
  669. EtherPPP; this does not place the IP address into a variable, but the output
  670. of EtherPPP can be piped to a file and the IP address picked off and inserted 
  671. in the appropriate locations. If this sounds complicated, it is; be warned.
  672.  
  673. Trumpet Winsock supports script-based assignment of addresses. Microsoft 
  674. supports a DHCP client in WFW TCP/IP, and both client and server in Windows NT. 
  675. There is also a forthcoming DHCP server for Sun. 
  676.  
  677. A-15. How can I set up PPP server on a UNIX host? 
  678.  
  679. This is not the appropriate place to address that question, but lots
  680. of info on this is available in the comp.protocols.ppp FAQ. 
  681.  
  682. A-16. What is WinSNMP? 
  683.  
  684. WinSNMP is an API which provides a standard interface to to the
  685. Simple Network Management Protocol (SNMP) for network
  686. management applications running under Windows. Applications written to 
  687. WinSNMP can run on any WinSNMP-compatible implementation. 
  688.  
  689. Vendors supporting WinSNMP include FTP Software, which supports it
  690. in both OnNet 1.1, and PC/TCP 3.0. 
  691.  
  692. B. Questions about drivers
  693.  
  694. B-1. What do I need to know before setting up SLIP or PPP?
  695.  
  696. Before setting up your SLIP or PPP connection, you should
  697. have available the following information:
  698.  
  699. * The domain name and TCP/IP address of your host.
  700. * Whether your TCP/IP address will be assigned statically,
  701.   dynamically, or from the server.
  702. * If from the server, whether you will be using RARP, BOOTP or DHCP. 
  703. * The domain name and TCP/IP address of your machine (if you are not
  704.   configuring the address dynamically or via BOOTP)
  705. * The domain name and TCP/IP address of the primary and secondary
  706.   Domain Name Server.
  707. * The subnet mask.
  708. * The domain name and TCP/IP address of an NNTP server.
  709. * Whether your host supports POP, and if so, what version.
  710. * Whether the host supports compressed or uncompressed SLIP, or PPP.
  711. * The size of the Maximum Receivable Unit (MRU). 
  712.  
  713.  
  714. Do not attempt to connect to your host before you have this
  715. information, since it will just waste your time and money, and may
  716. cause problems for the network.  In particular, do not attempt to
  717. initiate a connection using a made up TCP/IP address! It is possible
  718. that your made-up address may conflict with an existing address.  
  719.  
  720. This is probably the quickest way to get people very angry at you.
  721.  
  722. Static addressing means that your TCP/IP address will always
  723. be the same. This makes it easy to configure your setup files.
  724. Dynamic addressing means that the host will send you a message
  725. containing your TCP/IP address when you log on. This can be
  726. problematic if your software doesn't support grabbing the address
  727. and inserting it into the setup files. If not, then you may have
  728. to edit your setup files every time you log on. Yuck!
  729.  
  730. Chameleon NFS includes a version of SLIP which can handle dynamic
  731. addressing. The most recent version of Novell's Lan Workplace for
  732. DOS does as well. 
  733.  
  734. You can also retrieve your address using RARP, BOOTP or DHCP. RARP
  735. is only available to those on the same LAN as the RARP server, since
  736. it uses broadcasting. BOOTP clients can access BOOTP servers on other
  737. LANs via BOOTP relay. DHCP is a BOOTP extension, which allows
  738. complete configuration of a client from info stored on a DHCP server, and in
  739. addition supports new concepts such as "address leases". Since
  740. DHCP frames are very similar to BOOTP frames, devices supporting BOOTP relay 
  741. will also support DHCP relay. 
  742.  
  743. Of course, for DHCP or BOOTP to work, you will need to set up a DHCP
  744. or BOOTP server. DHCP servers are available for UNIX, and Windows NT.
  745.  
  746. PPP also supports server assignment of TCP/IP addresses.
  747.  
  748.  
  749. B-2. How do I configure SLIPDIAL?
  750.  
  751.  
  752. From Ashok Aiyar, mailto:ashok@biochemistry.bioc.cwru.edu:
  753.  
  754. PHONE Script Files:
  755.  
  756. PHONE comes with several scripts (for various modems) and for the
  757. University of Minnesota Terminal server built into it.  The command
  758. PHONE WRITE writes these scripts to an ASCII file called PHONE.CMD,
  759. which can be edited to your needs (modem and slip server)
  760.  
  761. The documentation that accompanies PHONE, provides good instructions on
  762. writing script files to get PHONE to dial SLIP servers other than
  763. the University of Minnesota server.  For example here is a script
  764. that I use to dial a CISCO server at the University that I attend.
  765.  
  766. Background:  To start a SLIP connection, I dial our terminal server,
  767. and login with a username and password.  After doing so, I start a SLIP
  768. session with the following command "slip username-slip.dialin.cwru.edu",
  769. followed by my password -- again.
  770.  
  771. Here then is the relevant portion of the PHONE.CMD script file -
  772. #
  773. # CWRU-TS2 SLIP login script by Ashok Aiyar 3/26/93
  774. # Last revised 3/28/93
  775. Procedure    Host.CWRU.Login
  776. TimeOut 60      'CWRU-TS2 terminal server is not responding'
  777. Message         "CWRU-TS2 SLIP login script -- Version 1.1"
  778. Message         'Waiting for SLIP server to respond'
  779. Quiet ON
  780. Expect 'Verification'
  781. Message         'Request for User Verification Received from CWRU-TS2'
  782. Message         'Sending your user name and password'
  783. Quiet OFF
  784. Expect   'Username:'
  785. Send '%u<'
  786. Expect   'Password:'
  787. Private
  788. Send '%p<'
  789. Reject    'Access denied'   'Your user name or password was not accepted'
  790. TimeOut 30    'SLIP server did not respond to your validation request'
  791. Expect 'CWRU-TS2>'
  792. Send 'SLIP<'
  793. TimeOut 10    'SLIP server did not respond to SLIP command'
  794. Expect 'IP hostname or address:'
  795. Send '%u-slip.dialin.cwru.edu<'
  796. TimeOut 10 'SLIP server did not respond to hostname'
  797. Reject    'Bad IP address'   'Incorrect Hostname'
  798. Expect 'Password:'
  799. Send '%p<'
  800. Reject    'Access denied'    'Password not accepted.'
  801. TimeOut 10
  802. Expect 'Header Compression will match your system'
  803. Message 'Login to CWRU SLIP server successful'
  804. Wait 1.0
  805. EndProcedure   Host.CWRU.Login
  806. #
  807. #
  808. Procedure      Host.CWRU.LogOut
  809. # Nothing special needs to be done to logout
  810. EndProcedure   Host.CWRU.LogOut
  811. #
  812. #   End of Script file
  813. #
  814. ----------------------------------------------------------------------
  815. How to use packet drivers other than UMSLIP with PHONE?
  816.  
  817. The quick answer -- there is no "clean" way.  Below is a batch file
  818. hack that I wrote to use PHONE with other packet drivers.  In this
  819. example, the packet driver is Peter Tattam's CSLIPPER.  To use a
  820. batch file like this, you must know the parameters with which you
  821. plan to use the packet driver -- i.e interrupt vector, baud rate,
  822. port address, and IRQ.  This batch file requires UMSLIP.COM,
  823. CSLIPPER.EXE, and TERMIN.COM to be in the same directory
  824. or in your path ...
  825.  
  826. All that the BATCH file does is to let you dial the SLIP connection
  827. using PHONE, load the appropriate packet driver, hangup the
  828. connection, and unload the driver when you are done ...
  829.  
  830. -- being CWRUSLIP.BAT --
  831. @echo off
  832. rem   this batch file is an ugly hack of U. of Minn. "SLIP.BAT"
  833. rem   awaiting a version of C/SLIPPER that can directly interact
  834. rem   with PHONE
  835. rem   CWRUSLIP.BAT file is used with PHONE.EXE to start a SLIP
  836. rem   connection on CWRU-TS2
  837. rem   last modified 3/28/93 -- Ashok Aiyar
  838.  
  839. @echo off
  840. cls
  841. goto start
  842.  
  843. :start
  844. if %1. == ?.         goto help
  845. if %1. == help.      goto help
  846. if %1. == setup.     goto setup
  847. if %1. == dial.      goto forceD
  848. if %1. == hangup.    goto forceH
  849. if %1. == quit.      goto forceH
  850. if %1. == HELP.      goto help
  851. if %1. == SETUP.     goto setup
  852. if %1. == DIAL.      goto forceD
  853. if %1. == QUIT.      goto forceH
  854. goto bogus
  855. goto unload
  856.  
  857. :forceH
  858. termin 0x60
  859. umslip >nul
  860. phone force hangup
  861. goto unload
  862.  
  863. :slipper
  864. termin 0x60
  865. REM  the following line must be changed to reflect the COM port,
  866. REM  IRQ, baud rate, and software interrupt
  867. lh c:\packet\cslipper com1 vec=60 baud=57600 ether
  868. goto end
  869.  
  870. :forceD
  871. termin 0x60
  872. umslip >nul
  873. phone force dial
  874. goto slipper
  875.  
  876. :setup
  877. termin 0x60
  878. umslip >nul
  879. phone setup
  880. goto help
  881.  
  882. :unload
  883. termin 0x60
  884. goto end
  885.  
  886. :bogus
  887. echo %1 is not a valid command.
  888. echo Try "cwruslip help" for a list of valid commands
  889. echo.
  890.  
  891. :help
  892. echo --------------------------------------------------------------
  893. echo           Case Western Reserve University SLIP Setup
  894. echo                  using Univ. of Minnesota PHONE
  895. echo --------------------------------------------------------------
  896. echo cwruslip setup     modem settings, phone number, username etc.
  897. echo.
  898. echo cwruslip dial      DIAL and establish the SLIP connection
  899. echo cwruslip quit      HANGUP the phone and unload the driver
  900. echo cwruslip help      this screen
  901. echo.
  902.  
  903. :end
  904. -- end CWRUSLIP.BAT --
  905.  
  906.  
  907.  
  908. B-3. How do I install packet drivers for Windows applications?
  909.  
  910. How do I install packet drivers for Windows applications?
  911.  
  912. The secret is to load the packet driver, then run Windows. If you
  913. are running Trumpet Winsock, you will also have to load WINPKT
  914. before running Windows, as follows:
  915.  
  916. winpkt 0x60
  917.  
  918. If you are running DOS applications within a virtual DOS session
  919. under Windows, you should load PKTMUX after your packet driver, as
  920. follows:
  921.  
  922. PKTMUX 4 [or however many sessions you want]
  923. WIN [load windows]
  924.  
  925. Then within each DOS session, load PKTDRV, the virtual packet driver.
  926.  
  927. If you are running Trumpet Winsock along with other DOS apps in a 
  928. virtual DOS session, then you will need to load PKTDRV prior to
  929. loading Windows, and then load WINPKT on top of it, as follows:
  930.  
  931. PKTMUX 4
  932. PKTDRV 0x62
  933. WINPKT 0x62
  934. PKTDRV 0x60
  935. WIN
  936.  
  937. TCPMAN will then find the virtual packet driver at 0x62. 
  938.  
  939.  
  940. B-4. When do I need to install  WINPKT? 
  941.  
  942. PKTMUX and WINPKT both accomplish the same thing: allowing you to
  943. connect to a DOS packet driver running in real mode from a virtual
  944. DOS session under Windows. PKTMUX is useful when you are running
  945. more than one TCP/IP stack, and since it takes up more RAM and is
  946. slower than WINPKT, you should only use it when you want to run more
  947. than one stack at a time. If you are running only one DOS app,
  948. or are using Trumpet Winsock, stick with WINPKT. 
  949.  
  950. James Harvey (mailto:harvey@iupui.edu) notes:
  951. Winpkt is only useful running DOS applications with built-in TCP/IP
  952. stacks under Windows, and for some Windows-based stacks (like the
  953. Trumpet winsock.dll).  When an application registers with a packet
  954. driver TSR to receive packets of a specified protocol type, one of the
  955. things it hasto pass as a parameter to the packet driver in the call
  956. is the address of a routine in the application that the packet driver
  957. is to call when it has a packet to pass back to the application.  In
  958. the case of an application running in 386 enhanced mode in a DOS shell
  959. under Windows that is using a packet driver loaded in real mode before
  960. Windows was loaded, the packet driver must ensure that Windows has the
  961. application in memory when it does the callback, otherwise the callback
  962. jumps off into space and your system locks up.  Winpkt does a Windows
  963. system call to force the app into memory before the callback is done.
  964.  
  965. Erick Engelke (mailto:erick@development.uwaterloo.ca) notes:
  966. Windows in enhanced mode uses the protected mode of the
  967. 386 CPU to create multiple virtual machines.  Winpkt tells
  968. Windows to switch to the correct virtual machine before
  969. trying to pass up the packet.  This reduces the chances of
  970. Windows crashing.
  971.  
  972.  
  973. B-5. How to do I run both WinQVT and ODI?
  974.  
  975. My advice is to use the Windows Sockets version of WinQVT/Net, Trumpet
  976. Winsock, and ODIPKT. ODIPKT will allow you to run packet driver software
  977. over ODI. You will also need to load WINPKT for Trumpet Winsock. 
  978.  
  979. The loading sequence is:
  980.  
  981. LSL [Link support layer]
  982. NE2000.COM [or other ODI driver]
  983. IPXODI [IPX version supporting ODI]
  984. NETX
  985. ODIPKT 1 96
  986. WINPKT 0x60
  987. WIN [run windows]
  988.  
  989. Then run Trumpet Winsock, and load WinQVT/Net. 
  990.  
  991. B-6. Is it possible to use BOOTP over SLIP?
  992.  
  993. Yes, but it is easier to use dynamic address assignment to get 
  994. your IP address. This is where the SLIP server outputs your IP address 
  995. before switching to SLIP. 
  996.  
  997. If you need BOOTP, then you should run a BOOTP server on the SLIP
  998. server so that it can tell which SLIP connection originated the
  999. request. Of course, the BOOTP server will ignore the hardware address
  1000. of the request originator, but instead will keep track of the SLIP
  1001. interface the request came in on. See the question on adding BOOTP to
  1002. KA9Q for info on how to handle this on the PC. Under UNIX, you may
  1003. have to add BOOTP capability to your slip driver, and rebuild the
  1004. kernel. (Not recommended for the squimish). 
  1005.  
  1006.  
  1007. B-7. How do SLIP drivers work? 
  1008.  
  1009. Some TCP/IP applications are written to only support Class 1 (Ethernet)
  1010. packet drivers, but do not support Class 6 (SLIP). For these applications, you
  1011. need software to make the application think it is dealing with a class 1
  1012. interface. This is done by adding fake ethernet headers to incoming 
  1013. SLIP or PPP packets and stripping the headers off outgoing packets. 
  1014.  
  1015.  
  1016. B-8. When do I need to install PKTMUX?
  1017.  
  1018. PKTMUX is needed to allow you to use more than one TCP/IP stack at the same 
  1019. time. This is useful if you have applications that require different stacks. 
  1020. Note that you do not need PKTMUX to run different protocols, since packet 
  1021. drivers only look at packets in the protocol they're designed to handle, 
  1022. and therefore you can use more than one of these at a time without conflict. 
  1023. You also don't need PKTMUX if all your applications use the same TCP/IP stack. 
  1024.  
  1025. PKTMUX works by looking at outgoing datagrams, and caching information on 
  1026. source and destination ports and addresses. Using this information, PKTMUX
  1027. tries to sort incoming datagrams by TCP/IP stack. If it can't figure out
  1028. which stack to send a datagram to (as might be the case if you were running
  1029. a server application on a well-known port, and had not sent any outgoing
  1030. packets yet), PKTMUX will send the datagram to all stacks. If all stacks
  1031. do not complain about the datagram, PKTMUX will throw away the ensuing outgoing
  1032. ICMP error message, assuming that one of the stacks correctly received
  1033. the datagram. If all stacks complain, it will send a single ICMP message
  1034. and throw the rest away.
  1035.  
  1036. While PKTMUX does its job very well, there are some situations that it cannot
  1037. handle, such as port conflicts. If two applications open the same TCP port,
  1038. chaos is inevitable, and there is little that PKTMUX can do to help. 
  1039.  
  1040. B-9. Can NDIS be used underneath multiple protocol stacks of the same type?
  1041. No. There is no equivalent to PKTMUX for NDIS.  
  1042.  
  1043. B-10. Is there an NDIS over packet driver shim? 
  1044. Joe Doupnik writes:
  1045.  
  1046. "No. Packet Drivers work by having an application register
  1047. for a particular packet TYPE, such as 0800 for IP. NDIS works much
  1048. differently, by offering a peekahead of every packet to applications in turn,
  1049. a polling operation. The only way NDIS could gracefully sit on a PD would
  1050. be to run the Packet Driver in all-types mode and let NDIS see all pkts
  1051. not used by other clients. Needless to say, that's an undesirable situation.
  1052. The quick solution, costing about US$100 (at least at my place,
  1053. more at yours) is a second Ethernet board in the client together with a
  1054. second IP address (most important, please)."
  1055.  
  1056. B-11. How do I run NetBIOS over TCP/IP? 
  1057.  
  1058. NetBIOS over TCP/IP is discussed in RFCs 1001 and 1002, which defines
  1059. three types of NetBIOS nodes:  
  1060.  
  1061. * B nodes, which use UDP broadcast packets to distribute datagrams and
  1062. resolve names. 
  1063. * P nodes, which use point-to-point communications and which 
  1064. require NetBIOS Datagram Distribution (NBDD) and NetBIOS Name 
  1065. Servers (NBNS). P nodes do not listen to or use broadcast 
  1066. services, so they cannot be used alongside B nodes. Unfortunately NBNS, 
  1067. and NBDD servers were not widely implemented, and those
  1068. that do exist (such as an implementation from Network Telesystems) 
  1069. are not inexpensive.  
  1070. * M nodes, which use both point-to-point and broadcast. 
  1071.  
  1072. B node technology cannot be used on an IP internet without extensions, 
  1073. since UDP broadcast packets are not forwarded through routers. This 
  1074. is not a problem with use of NetBIOS over IPX/SPX, since in IPX/SPX 
  1075. broadcast packets are forwarded. 
  1076.  
  1077. However, until very recently, M and P node technology was not supported 
  1078. by popular TCP/IP implementations. For example, PC/TCP supports
  1079. B node technology with extensions such as a broadcast file, host file, 
  1080. or DNS resolution of NetBIOS names. Windows NT and WFW TCP/IP uses an 
  1081. LMHOSTS file for resolving names. 
  1082.  
  1083. According to Chip Sparling of FTP Software:
  1084.  
  1085. "From what I remember from our discussions of a few years ago, P
  1086. nodes were only implemented by Ungermann Bass and 3COM (and they 
  1087. required you to use a NetBIOS name resolver which was non-rfc 1001, 1002 compliant), 
  1088. nobody did M nodes (as far as I remember) and PC-LAN, Lantastic and
  1089. LanManager used B node.  Also, if you did a P or M node it wouldn't be
  1090. compatible with a B node NetBIOS.  We decided that we could give the
  1091. compatibility and functionality (routability) with a B node plus
  1092. extensions implementation.  So, that's what we did." 
  1093.  
  1094. Without implementation of M and P node technology, the only way 
  1095. to run over an IP internet is to to implement B node technology 
  1096. with extensions, as FTP Software does in PC/TCP. According to Chip, 
  1097. "one way to handle large numbers of hosts on multiple networks is 
  1098. to use the broadcast file extenstion.  Instead of putting specific 
  1099. ip addresses in the broadcast file, use a subnet broadcast address 
  1100. like nnn.nnn.nnn.255. which will cover an entire subnet."
  1101.  
  1102. Assuming you don't need any of the extensions to RFC NetBIOS 
  1103. Microsoft created to make NetBIOS work smoothly in a routed environment 
  1104. (available only in their IP stack), you can choose from a wide variety of
  1105. commercial vendors. For example, FTP Software's PC/TCP includes RFC NetBIOS 
  1106. support; Performance Technologies has a NetBIOS that runs over packet drivers,
  1107. as does Accton (LANSoft). 
  1108.  
  1109. If any other vendors are reading this, I'd love to have information 
  1110. on how *you* implement NetBIOS over TCP/IP, and whether you'll be
  1111. supporting WINS, the new P-node technology name resolution service
  1112. from Microsoft. 
  1113.  
  1114. WINS will be included in the next WFW TCP/IP release, which is currently
  1115. in beta test and available for download from ftp.microsoft.com. Consult the 
  1116. beta release documentation for more information on this. 
  1117.  
  1118.  
  1119. B-12. How do I run NFS along with another TCP/IP application?
  1120.  
  1121. The DOS NFS implementation by M. Durkin now supports a built-in
  1122. packet multiplexer that can handle NFS plus another stack loaded
  1123. simultaneously. If you need to load more stacks, then you will need
  1124. to run PKTMUX as well.
  1125.  
  1126. See the resource section for details. 
  1127.  
  1128. B-13. How do I run Trumpet Winsock along with KA9Q or NFS? 
  1129.  
  1130. The secret is to load WINPKT on top of the PKTDRV virtual
  1131. packet driver, if you are running PKTMUX. 
  1132.  
  1133. B-14. Sample Stick Diagrams
  1134.  
  1135. It has been proposed that we begin to collect some diagrams of working
  1136. combinations of hardware, drivers, shims, stacks, and applications. I'm
  1137. game, and have made a start below. If you've got some other exotic
  1138. configuration that works (or if you've tried one of the configurations below
  1139. and discovered it doesn't work, drop me a line).
  1140.  
  1141.    Running an individual DOS application under Windows
  1142.  
  1143.     NCSA telnet / DOS Trumpet / POPmail/ PC Gopher III
  1144.                  |
  1145.              DOS Session
  1146.                  |
  1147.              Windows 3.1
  1148.                  |
  1149.                WinPKT
  1150.                  |
  1151.             Packet driver or Shim
  1152.                  |
  1153.                 DOS
  1154.          |
  1155.            Network Adapter
  1156.  
  1157.  
  1158. DOS Trumpet, NCSA Telnet, and WinQVT/Net over Ethernet under Windows
  1159.  
  1160.                                                 QVT/NET
  1161.                                                    |
  1162.      TRUMPET                    NCSA telbin        |
  1163.        |                             |             |            
  1164.      PKTDRV1                     PKTDRVn           |
  1165.        |                             |             |
  1166.      DOS Session                DOS Session    Windows Session
  1167.        +-----------+-----------------+             |
  1168.                    |                               |
  1169.                    +                               |             
  1170.              WINDOWS 3.1 .............        WINDOWS 3.1
  1171.                    |                               |
  1172.                    |                      PKTINT(QVT/NET own)
  1173.                    |                               |
  1174.                    |                           PKTDRVx
  1175.                    +-------------------------------+            
  1176.                PKTMUX n
  1177.                    |                   
  1178.           Packet Driver or SHIM
  1179.                    |              
  1180.                   DOS 
  1181.            |
  1182.             Network Adapter
  1183.  
  1184. PC Gopher III, NCSA Telnet over CSLIP under Windows
  1185.  
  1186.  
  1187.                                                 
  1188.                                                    
  1189.   PC Gopher III                 NCSA telbin        
  1190.        |                             |                         
  1191.      PKTDRV1                     PKTDRVn           
  1192.        |                             |             
  1193.      DOS Session                DOS Session   
  1194.        +-----------+-----------------+             
  1195.                    |                               
  1196.                    +                                            
  1197.              WINDOWS 3.1 
  1198.                    |                               
  1199.                    |                   
  1200.                    |                               
  1201.                    |                           
  1202.                    +           
  1203.                 PKTMUX n
  1204.                    |                   
  1205.                CSLIPPER
  1206.                    |              
  1207.                   DOS
  1208.            |
  1209.           Serial Port  
  1210.  
  1211. PC Gopher II and NetWare on a LAN - Alternative I
  1212. [Didn't work for me, but it's supposed to be OK]
  1213.  
  1214.                NetWare
  1215. PC Gopher        |
  1216.   III            |
  1217.    |             |
  1218. DOS Session    NETX
  1219.    |             |
  1220.  Windows 3.1     |
  1221.    |           PDIPX
  1222.   WINPKT        /
  1223.      \         /
  1224.       \       /
  1225.        \     /
  1226.         \   /
  1227.      Packet Driver
  1228.           |
  1229.      DOS
  1230.           |
  1231.      Network Adapter
  1232.    
  1233.  
  1234. PC Gopher III and NetWare on a LAN - Alternative II
  1235.  
  1236.                                   PC-Gopher III
  1237.                       |
  1238.                   DOS Session
  1239.                       |
  1240.                       Windows 3.1                 
  1241.                                       |
  1242.                                       |
  1243.                     NetWare            |
  1244.                         \            /
  1245.                       NETX         WINPKT
  1246.                           \        /
  1247.                         IPXODI   ODIPKT
  1248.                              \   /
  1249.                               \ /
  1250.                    |
  1251.             Link Support Layer
  1252.                                |
  1253.                             ODI driver
  1254.                    |
  1255.                   DOS
  1256.                                |
  1257.                           Network Adapter
  1258.  
  1259. WinQVT/Net and PC Gopher II and NetWare over a LAN - Alternative I
  1260.  
  1261. PC Gopher      
  1262.   III 
  1263.    |             Win QVT/Net      
  1264.  PKTDRV1            |      
  1265.    |                |   
  1266. DOS session      Windows 3.1
  1267.    |                |
  1268. Windows 3.1      PKTINT (QVT/NET own)
  1269.    |                |
  1270.    |             PKTDRVn
  1271.  WinPKT             |
  1272.    |                |          NetWare
  1273.    +----------------+            |
  1274.    |                             |
  1275.    |                             |
  1276.  PKTMUX n                      NETX
  1277.    |                             |
  1278.     \                          PDIPX
  1279.      \                           |
  1280.       \                          |
  1281.        \                         |
  1282.         \                        |
  1283.      Packet Driver --------------+
  1284.           |
  1285.      DOS
  1286.           |
  1287.      Network Adapter
  1288.  
  1289. WinQVT/Net, PC Gopher III and NetWare over a LAN - Alternative II
  1290.     
  1291.                                              QVT/Net
  1292.   PC Gopher III                 NCSA telbin        |
  1293.        |                             |             |            
  1294.      PKTDRV1        .....        PKTDRVn           |
  1295.        |           |                 |             |
  1296.      DOS Session                DOS Session    Windows Session
  1297.        +-----------+-----------------+             |
  1298.                    |                               |                                  
  1299.            |                               |            
  1300.              WINDOWS 3.1 .......................WINDOWS 3.1
  1301.                    |                               |
  1302.                    |                      PKTINT(QVT/NET own)
  1303.                    |                               |
  1304.                    |                           PKTDRVx
  1305.                      |                               |      
  1306.            |                           |
  1307.            |                           |
  1308.            |                           |
  1309.            +------------------+------------+
  1310.                       |
  1311.                     NetWare            |
  1312.                         \            /
  1313.                       NETX         PKTMUX n (use if >1 TCP/IP app)
  1314.                           \        /
  1315.                         IPXODI   ODIPKT
  1316.                              \   /
  1317.                               \ /
  1318.                    |
  1319.                 Link Support Layer
  1320.                                |
  1321.                            ODI driver
  1322.                                |
  1323.               Network Adapter
  1324.  
  1325.  
  1326.  
  1327. PC Eudora and Windows Trumpet over CSLIP under Windows using Trumpet Winsock
  1328.  
  1329.  
  1330.  PC Eudora    Windows Trumpet
  1331.      \         /
  1332.       \       /
  1333.        \     /
  1334.         \   /
  1335.        TCPMAN
  1336.           |
  1337.      Windows 3.1
  1338.       |
  1339.      WINPKT 0x60
  1340.           |
  1341.          DOS
  1342.           |
  1343.       Serial Port
  1344.       
  1345. PC Eudora and Windows Trumpet supporting Ethernet and CSLIP under Windows 
  1346. using NDIS supporting stack [Chameleon]
  1347.  
  1348. [Please note: this is not possible under Trumpet Winsock, since it can
  1349. only handle a single interface; it requires a stack that routes]
  1350.  
  1351.  PC Eudora    Windows Trumpet
  1352.      \         /
  1353.       \       /
  1354.        \     /
  1355.         \   /
  1356.       Chameleon NEWT
  1357.           |
  1358.       Windows v3.1
  1359.           |
  1360.       +------------------+
  1361.       |                  |
  1362.     Protocol Manager         |
  1363.           |                  |
  1364.       NDIS Mac Driver     Serial Port
  1365.           |
  1366.          DOS
  1367.           |
  1368.      Ethernet card
  1369.  
  1370.  
  1371.  
  1372. PC Eudora, Windows Trumpet, and KA9Q under Windows
  1373.  
  1374.        WinTrump   PC Eudora
  1375.             \     /
  1376.              \   /
  1377.  KA9Q         \ /
  1378.    |           |
  1379.  PKTDRV      TCPMAN
  1380.      \         |
  1381.       \       /
  1382.        \     /
  1383.         \   /
  1384.      \ /
  1385.         Windows
  1386.           |
  1387.         PKTDRV 0x62
  1388.       |
  1389.         PKTMUX 2
  1390.           |
  1391.      Packet Driver
  1392.           |
  1393.          DOS
  1394.           |
  1395.      Ethernet Card
  1396.  
  1397. HGopher, PC Eudora, and WinTrumpet Under Windows
  1398. (Whether the TCP/IP stack is loaded before or
  1399. after Windows depends on the stack)
  1400.  
  1401.        HGopher
  1402.          |       
  1403.          |
  1404.    PC    |
  1405.  Eudora  |  WinTrumpet
  1406.      \   |   /
  1407.       \  |  /
  1408.        \ | /
  1409.         \|/
  1410.        TCPMAN
  1411.          |
  1412.      Windows 3.1
  1413.          |
  1414.       WINPKT
  1415.          |
  1416.   Packet Driver
  1417.          |
  1418.         DOS
  1419.          |
  1420.    Ethernet Card
  1421.  
  1422. B-15. Strange and wonderful configuration files submitted by readers
  1423.  
  1424. Robert Clift (mailto:clifta@sfu.ca) writes:
  1425.  
  1426. "I have WinQVT/Net 3.4, PC Gopher III (including NCSA DOS Telnet), KA9Q 
  1427. (gopher and FTP server), and POPMail all running together under Windows 
  1428. over PKTMUX on a 3C503 packet driver (and Ethernet card)."
  1429.  
  1430. Here is the stick diagram (yikes!): 
  1431.  
  1432. Win/QVTNet 3.7     KA9Q Gopher      PC POPMail 3.2     PC Gopher III 1.01
  1433. on interrupt 65    & FTP Server           \                    /
  1434.     \                  |                    \                /
  1435.       \                |                      \            /
  1436.         \              |                        \        /
  1437.           \          PKTDRV                       PKTDRV
  1438.             \          |                            /
  1439.               \      DOS Session               DOS Session
  1440.                 \      |                        /
  1441.                   \    |    -------------------       
  1442.                     \  |  /                 
  1443.                   Windows 3.1
  1444.                        |
  1445.                      PKINT
  1446.                        |
  1447.          PKTDRV on Int 65 no listeners set
  1448.                        | 
  1449.            PKTMUX 1.2 with 3 channels
  1450.                        |
  1451.           Clarkson 3C503 Packet Driver
  1452.                    |
  1453.                   DOS
  1454.                        |
  1455.            3Com Etherlink II/16 TP
  1456.                        |
  1457.                     Ethernet
  1458.  
  1459. NOTES:
  1460.  
  1461. Win/QVTNet must be loaded as the very first Windows application and must be 
  1462. kept operating as long as your are in Windows.  It appears that its TCP/IP 
  1463. stack does some strange things when it disconnects and kills access to the 
  1464. actual packet driver.
  1465.  
  1466. I run PC gopher and POPMail alternatively, so they share one channel which 
  1467. is allocated via PKTDRV before running the application and deallocated 
  1468. after the application is finished (I usually throw in a reset command to 
  1469. PMTMUX as well just to be safe).
  1470.  
  1471. To explain what is happening (as best I can since a lot of this came from 
  1472. experimentation):
  1473.  
  1474. 1.  The packet driver is loaded
  1475. 2.  PKTMUX is run over the packet driver in order to multiplex it (in this 
  1476.     case three channels).
  1477. 3.  A virtual packet driver is loaded for Win/QVTNet on interrupt 65 and 
  1478.     the packet driver is told that it is not to listen for any server 
  1479.     requests.
  1480. 4.  PKINT is loaded over top of the virtual packet driver
  1481. 5.  Start Windows and run Win/QVTNet as the first application, it must be 
  1482.     kept running throughout the Windows session.
  1483. 6.  Load a virtual packet driver from a DOS session and start KA9Q.  I use 
  1484.     the following batch file to do this:
  1485.  
  1486.          c:\network\pktdrv 63 /l
  1487.          h:
  1488.          cd \
  1489.          net091b
  1490.          c:\network\pktdrv 63 /uu
  1491.          c:\network\pktmux /r
  1492.  
  1493. 7.  Load a virtual packet driver and run PC Gopher or POPMail as needed.  I 
  1494.     use the following batch files for PC Gopher and POPMail respectively:
  1495.  
  1496.          c:\network\pktdrv 63
  1497.          h:\goph-cli\gopher /T=h:\goph-cli\text /X=h:\goph-cli\binary
  1498.          c:\network\pktdrv 63 /uu
  1499.  
  1500.  
  1501.          c:\network\pktdrv 66 /c
  1502.          h:\popmail\popmail /noems
  1503.          c:\network\pktdrv 66 /uu
  1504.  
  1505. 8.  The only problem seems to be that the NNTP module in Win/QVTNet will 
  1506.     not operate correctly if POPMail is operating.  Otheriwse it seems to 
  1507.     work okay without too many problems.
  1508.  
  1509. C. KA9Q Questions
  1510.  
  1511. C-1. What version of KA9Q should I use and where do I get it?
  1512.  
  1513. There are so many releases of KA9Q that it is a significant amount of
  1514. work just to keep track of them all. This has occurred partly because
  1515. KA9Q does not support extended or expanded memory, and therefore many
  1516. people have needed to customize it with the features relevant to them
  1517. in order to allow it to do what they want as well as fit into memory. 
  1518. The primary difference among the various releases is whether they 
  1519. include code for a BBS, packet radio support (AX.25), synchronous cards (for
  1520. use with leased lines), NNTP, CSO or Gopher servers, packet filtering, DNS,
  1521. RIP or PPP support. 
  1522.  
  1523. The three primary KA9Q releases at this time are those managed by Ashok Aiyar
  1524. (ashok@biochemistry.bioc.cwru.edu), those put out by Demon Internet
  1525. Services (DIS), and the JNOS distribution. JNOS is the primary packet radio-
  1526. oriented release; the other two major releases do not include AX.25 support.
  1527. Since JNOS does not include several features important to non-packet radio
  1528. users (DNS/Gopher/CSO server, hop check), try one of the other two releases
  1529. if you're not interested in packet radio.
  1530.  
  1531. Ashok's release is based on the N1BEE 0.85-beta which in turn 
  1532. is based on PA9GRI 2.0m NOS. Version 11c includes support for NTP, CSO,
  1533. gopher, FTP, FINGER, HTTP and SMTP/POP2/POP3 servers, plus VT102 and packet 
  1534. filtering support. Please not that this release does *not* include radio or 
  1535. synchronous card support, unlike the standard KA9Q release, and only support 
  1536. SLIP/CSLIP. Also, there is no DNS server support, and the tip command has been 
  1537. removed, so that you need to use an external dialer to make the connection.
  1538.  
  1539. Available as:
  1540.  
  1541. file://biochemistry.bioc.cwru.edu/pub/nos/nos11c.exe, 
  1542. file://biochemistry.bioc.cwru.edu/pub/nos/nos11c.txt, 
  1543. file://biochemistry.bioc.cwru.edu/pub/nos/nos11c.map, 
  1544. file://biochemistry.bioc.cwru.edu/pub/nos/nos192.txt, 
  1545. file://biochemistry.bioc.cwru.edu/pub/nos/nos_1229.man, 
  1546. file://biochemistry.bioc.cwru.edu/pub/nos/vt102.zip, 
  1547. file://biochemistry.bioc.cwru.edu/pub/nos/filter.txt, 
  1548. file://biochemistry.bioc.cwru.edu/pub/nos/autoexec.nos
  1549.  
  1550. The TextWin version from Demon Internet Services includes support for DNS server, packet filtering, FTP, SMTP/POP2/POP3 servers, NNTP server, VT102 support, NTP, BBS, SLIP/CSLIP,PPP (I don't know anyone who has gotten this to work), demand dial, ping, hop
  1551.  check (traceroute equivalent). 
  1552.  
  1553. From mailto:mike@childsoc.demon.co.uk (Michael Bernardi):
  1554.  
  1555. "Demon Internet Services have a dialin Internet service in the UK.
  1556. They also support a customised version of KA9Q optimised for
  1557. dialup, they also support the PCElm mailer, SNEWS news reader and
  1558. a customised front end. There is also a combined NEWS and MAIL
  1559. program called CPPNEWS and an alternative MAIL program called
  1560. VIEW, these last are unsupported by mailto:Internet@demon.co.uk but other
  1561. DIS users do support them. All these programs can be found on
  1562. ftp://ftp.demon.co.uk/pub/ibmpc/ and are written to
  1563. work with KA9Q (specifically the DIS version)."
  1564.  
  1565. Anthony McCarthy has added a multi-windowing system to KA9Q that 
  1566. supports the mouse, which has been recommended. See Resource 
  1567. listings for info. 
  1568.  
  1569. The DIS release includes three versions, small, medium and large. 
  1570. The large version includes everything but the kitchen sink, including
  1571. an NNTP server. I also believe it includes the KA9Q BBS code, and
  1572. radio support. 
  1573.  
  1574. Editorial: To my mind, the time has come for the major releases to combine 
  1575. their code bases and produce a version with the best features of all of them. 
  1576. To my mind, the ideal KA9Q release would be a release combining the improved 
  1577. server support of the CWRU release with a working PPP implementation, demand 
  1578. dial, and DNS server support. 
  1579.  
  1580.  
  1581. C-2. What do I need to run KA9Q? Why won't it do VT-100 emulation?
  1582.  
  1583. KA9Q is usually run from a startup script, such as my script
  1584. startnos.bat:
  1585.  
  1586. \nos\drivers\8003pkdr
  1587. \nos\net -d \nos
  1588.  
  1589. Here I first load the packet drivers for my 8003 Ethernet card, then
  1590. run KA9Q (known as net.exe).
  1591.  
  1592. The KA9Q package then reads commands from a configuration file, called
  1593. AUTOEXEC.NOS in some implementations, AUTOEXEC.NET in others. 
  1594.  
  1595. For VT100 emulation with KA9Q, try using Giles Todd's VT102.COM,
  1596. available via ftp://ftp.demon.co.uk/pub/ibmpc/DIS.
  1597.  
  1598. C-3. How do I configure KA9Q as a SLIP dialup connection?
  1599.  
  1600. Here is a sample CSLIP only configuration file, which was
  1601. written for Demon Internet Service's version of KA9Q (as
  1602. are all other KA9Q sample configs in this FAQ): 
  1603.  
  1604. # This config file is for use with the large TextWin 
  1605. # version of KA9Q available from ftp.demon.co.uk
  1606. #
  1607. # Set the host name
  1608. #
  1609. hostname foobar.com
  1610. #
  1611. # Configure COM3 on Interrupt 5, at 38400 bps with 
  1612. # RTS/CTS (c) and Van Jacobsen Compression (v) and
  1613. # MTU = 1008
  1614. attach asy 0x3e8 5 vjslip sl0 8092 1008 38400 cv
  1615. ifconfig sl0 ipaddress [192.187.134.3] 
  1616. ifconfig sl0 netmask 255.255.255.0
  1617. dialer sl0 dialer.sl0
  1618. #
  1619. #
  1620. # route all packets over sl0 by default (sl0 is the route 
  1621. # to the Internet)
  1622. #
  1623. route add default sl0
  1624. #
  1625. # Time To Live is the maximum number of hops a packet 
  1626. # can take before it is thrown away.  This command 
  1627. # prevents packets from looping infinitely. 
  1628. #
  1629. ip ttl 255
  1630. #
  1631. # The Maximum Segment Size is the largest single 
  1632. # transmission that you care to receive.  An mss of 216 
  1633. # will force folks to send you packets of 256 characters 
  1634. # or less (counting the overhead). 
  1635. #
  1636. tcp mss 1048
  1637. #
  1638. # The Window parameter establishes the maximum number 
  1639. # of bytes that may be outstanding before your system 
  1640. # expects an ack. If window is twice as big as mss, 
  1641. # for example, there will be two active packets on the 
  1642. # channel at any given time.  Large values of window 
  1643. # provide improved throughput on full-duplex links, but 
  1644. # are a problem on the air.  
  1645. # Keep  mss <= window <= 2*mss if you're on the air.
  1646. #
  1647. tcp window 6888
  1648. #
  1649. # This entry will open net.log in the \spool directory 
  1650. # and will record the server activity of your system.  If 
  1651. # you don't want a log, comment out this line; if you do, 
  1652. # make sure you have a \spool directory!
  1653. #
  1654. log \textwin\spool\net.log
  1655. #
  1656. # Each of the servers (services you will provide) must 
  1657. # be turned on before they will be active.  The 
  1658. # following entries turn all of them on.  To turn any 
  1659. # function off use the command 'stop' after NET gets 
  1660. # fired up, or just comment out the line here.
  1661. #
  1662. start ftp
  1663. ftpopt binary
  1664. start echo
  1665. start discard
  1666. # start telnet
  1667. start smtp
  1668. # This machine uses primary and seconary DNS servers
  1669. # to resolve addresses
  1670. domain addserver 192.100.81.101
  1671. domain addserver 192.100.81.105
  1672. # Command indicating presence of IBM AT
  1673. isat on
  1674. #
  1675. smtp gateway 140.174.7.1
  1676. #
  1677. #
  1678. # THE END
  1679.  
  1680. dialer.sl0 file:
  1681.  
  1682. # Configuration section.
  1683. #
  1684. configure:
  1685. init "ATZ\r"
  1686. dial_cmd "ATDT"
  1687. ld_code ""
  1688. number "15108658169"
  1689. retries 5
  1690. #
  1691. # Execution section.
  1692. #
  1693. execute:
  1694. #
  1695. # Toggle DTR.
  1696. #
  1697. control down
  1698. wait 2000
  1699. control up
  1700. wait 2000
  1701. #
  1702. # Initialize the modem.
  1703. #
  1704. init
  1705. wait 3000 "OK"
  1706. #
  1707. # Dial and wait for connection.
  1708. #
  1709. dial
  1710. wait 45000 "CONNECT"
  1711. #
  1712. # Now log in.
  1713. #
  1714. wait 60000 "ogin:"
  1715. wait 1000
  1716. send "userID\r"
  1717. wait 60000 "word:"
  1718. send "password\r"
  1719.  
  1720.  
  1721. After executing this setup file, you should hear the modem dial out
  1722. to your SLIP host. Assuming that the dialing script is correct,
  1723. it should login and go into SLIP mode.
  1724.  
  1725. Type RESET at the prompt. This kills any residual processes that
  1726. may be operating.  
  1727.  
  1728. At this point you should have a functioning connection. You might
  1729. try to ping your host via the command:
  1730. PING <host adddress>
  1731. If this works, you will then see the round trip time to your host,
  1732. in milliseconds. 
  1733.  
  1734. Other possible diagnostic commands:
  1735.  
  1736. ASYSTAT <interface>    Gives statistics on packets received, sent, etc.
  1737. TRACE <interface> 1011    Shows incoming characters
  1738. RIP TRACE 1        Traces RIP packets
  1739. HOP CHECK <address>    Traces the route to the designated system. Useful 
  1740.             for figuring out routing problems. 
  1741.  
  1742.  
  1743. C-4. How do I configure KA9Q as a router?
  1744.  
  1745. The KA9Q configuration that follows uses two interfaces, one a PPP
  1746. interface (pp0), the other an Ethernet interface (lan). Here I
  1747. am implementing dial on demand, and can also be doing packet 
  1748. filtering, and DNS serving on the same box. 
  1749.  
  1750. Please note the strange interrupt settings (Interrupt 5, port is COM3).  One of 
  1751. the nice things about KA9Q is that it is flexible enough to deal with 
  1752. such situations.
  1753.  
  1754. Here is a sample router configuration file:
  1755.  
  1756. # This config file is for use with the large TextWin 
  1757. # version of KA9Q available from ftp.demon.co.uk
  1758. #
  1759. # Set the host name
  1760. #
  1761. hostname gate.foobar.com
  1762. #
  1763. # Configure COM3 on Interrupt 5, at 38400 bps with 
  1764. # RTS/CTS (c) and PPP
  1765. attach asy 0x3e8 5 ppp pp0 8092 576 38400 c
  1766. ifconfig pp0 ipaddress [192.187.147.2] 
  1767. ifconfig pp0 netmask 255.255.255.0
  1768. dialer pp0 dialer.ppp demand
  1769. #
  1770. ppp pp0 trace 2
  1771. ppp pp0 quick
  1772. ppp pp0 lcp open
  1773. ppp pp0 ipcp open
  1774. #
  1775. # Packet driver installed at software interrupt 
  1776. # number 0x60.
  1777. #
  1778. attach packet 0x60 lan 2 1500
  1779. ifconfig lan ipaddress [192.187.157.4] 
  1780. ifconfig lan etmask 255.255.255.0
  1781. #
  1782. route add default pp0
  1783. #
  1784. # The local Ethernet has a Class C network address so
  1785. # route all IP addresses beginning with 192.187.157 to 
  1786. # it.
  1787. route add 192.187.157/24 lan
  1788. #
  1789. # Time To Live is the maximum number of hops a packet 
  1790. # can take before it is thrown away.  This command 
  1791. # prevents packets from looping infinitely. 
  1792. #
  1793. ip ttl 255
  1794. #
  1795. # The Maximum Segment Size is the largest single 
  1796. # transmission that you care to receive.  An mss of 216 
  1797. # will force folks to send you packets of 256 characters 
  1798. # or less (counting the overhead). 
  1799. #
  1800. tcp mss 576
  1801. #
  1802. # The Window parameter establishes the maximum number 
  1803. # of bytes that may be outstanding before your system 
  1804. # expects an ack. If window is twice as big as mss, 
  1805. # for example, there will be two active packets on the 
  1806. # channel at any given time.  Large values of window 
  1807. # provide improved throughput on full-duplex links, but 
  1808. # are a problem on the air.  
  1809. # Keep  mss <= window <= 2*mss if you're on the air.
  1810. #
  1811. tcp window 6888
  1812. #
  1813. # This entry will open net.log in the \spool directory 
  1814. # and will record the server activity of your system.  If 
  1815. # you don't want a log, comment out this line; if you do, 
  1816. # make sure you have a \spool directory!
  1817. #
  1818. log \textwin\spool\net.log
  1819. #
  1820. # Each of the servers (services you will provide) must 
  1821. # be turned on before they will be active.  The 
  1822. # following entries turn all of them on.  To turn any 
  1823. # function off use the command 'stop' after NET gets 
  1824. # fired up, or just comment out the line here.
  1825. #
  1826. start ftp
  1827. ftpopt binary
  1828. start echo
  1829. start discard
  1830. start telnet
  1831. start smtp
  1832. # This machine will act as a DNS server;
  1833. # Boot file is c:\textwin\named.boo, configuration
  1834. # goes in c:\textwin\spool\zones
  1835. domain startdns
  1836. # Command indicating presence of IBM AT
  1837. isat on
  1838. #
  1839. smtp gateway 192.187.157.2
  1840. #
  1841. # Use Router Information Protocol (RIP) to inform 
  1842. # the router at 192.187.147.253 about the existence 
  1843. # of the local network. Send RIP packets every 240 
  1844. # seconds. Only useful for dedicated routers.
  1845. rip add 192.187.147.253 240
  1846. #
  1847. # THE END
  1848.  
  1849. dialer.ppp file:
  1850.  
  1851. # Configuration section.
  1852. #
  1853. configure:
  1854. init "ATZ\r"
  1855. dial_cmd "ATDT"
  1856. ld_code ""
  1857. number "15108658169"
  1858. retries 5
  1859. #
  1860. # Execution section.
  1861. #
  1862. execute:
  1863. #
  1864. # Toggle DTR.
  1865. #
  1866. control down
  1867. wait 2000
  1868. control up
  1869. wait 2000
  1870. #
  1871. # Initialize the modem.
  1872. #
  1873. init
  1874. wait 3000 "OK"
  1875. #
  1876. # Dial and wait for connection.
  1877. #
  1878. dial
  1879. wait 45000 "CONNECT"
  1880. #
  1881. # Now log in.
  1882. #
  1883. wait 60000 "ogin:"
  1884. wait 1000
  1885. send "userID\r"
  1886. wait 60000 "word:"
  1887. send "password\r"
  1888.  
  1889. Here is another routing configuration file, using CSLIP and proxy arp:
  1890.  
  1891. # This config file is for use with the large TextWin 
  1892. # version of KA9Q available from ftp.demon.co.uk
  1893. #
  1894. # Set the host name
  1895. #
  1896. hostname gate.foobar.com
  1897. #
  1898. # Configure COM3 on Interrupt 5, at 38400 bps with 
  1899. # RTS/CTS (c) and Van Jacobsen Compression (v) and
  1900. # MTU = 1008
  1901. attach asy 0x3e8 5 vjslip sl0 8092 1008 38400 cv
  1902. ifconfig sl0 ipaddress [157.151.0.253] 
  1903. ifconfig sl0 netmask 255.255.255.0
  1904. dialer sl0 dialer.sl0
  1905. #
  1906. #
  1907. #
  1908. # Packet driver at 0x60; probably an Ethernet card
  1909. #
  1910. attach packet 0x60 lan 2 1500
  1911. ifconfig lan ipaddress [157.151.64.1] 
  1912. ifconfig lan netmask 255.255.255.0
  1913. #
  1914. # route all packets over sl0 by default (sl0 is the route 
  1915. # to the Internet)
  1916. #
  1917. route add default sl0
  1918. #
  1919. # The local Ethernet has a Class C network address so
  1920. # route all IP addresses beginning with 157.151.64 to it.
  1921. route add 157.151.64/24 lan
  1922. #
  1923. #  Use Proxy ARP
  1924. arp publish 157.151.64.1 ether 00:00:c0:33:f3:13
  1925. arp publish 157.151.64.254 ether 00:00:c0:33:f3:13
  1926. #
  1927. # Time To Live is the maximum number of hops a packet 
  1928. # can take before it is thrown away.  This command 
  1929. # prevents packets from looping infinitely. 
  1930. #
  1931. ip ttl 255
  1932. #
  1933. # The Maximum Segment Size is the largest single 
  1934. # transmission that you care to receive.  An mss of 216 
  1935. # will force folks to send you packets of 256 characters 
  1936. # or less (counting the overhead). 
  1937. #
  1938. tcp mss 576
  1939. #
  1940. # The Window parameter establishes the maximum number 
  1941. # of bytes that may be outstanding before your system 
  1942. # expects an ack. If window is twice as big as mss, 
  1943. # for example, there will be two active packets on the 
  1944. # channel at any given time.  Large values of window 
  1945. # provide improved throughput on full-duplex links, but 
  1946. # are a problem on the air.  
  1947. # Keep  mss <= window <= 2*mss if you're on the air.
  1948. #
  1949. tcp window 6888
  1950. #
  1951. # This entry will open net.log in the \spool directory 
  1952. # and will record the server activity of your system.  If 
  1953. # you don't want a log, comment out this line; if you do, 
  1954. # make sure you have a \spool directory!
  1955. #
  1956. log \textwin\spool\net.log
  1957. #
  1958. # Each of the servers (services you will provide) must 
  1959. # be turned on before they will be active.  The 
  1960. # following entries turn all of them on.  To turn any 
  1961. # function off use the command 'stop' after NET gets 
  1962. # fired up, or just comment out the line here.
  1963. #
  1964. start ftp
  1965. ftpopt binary
  1966. start echo
  1967. start discard
  1968. # start telnet
  1969. start smtp
  1970. # This machine uses primary and seconary DNS servers
  1971. # to resolve addresses
  1972. #
  1973. domain addserver 157.151.0.2
  1974. domain addserver 157.151.0.1
  1975. smtp gateway 157.151.0.2
  1976. #
  1977. # Command indicating presence of IBM AT
  1978. isat on
  1979. #
  1980. #
  1981. #
  1982. # THE END
  1983.  
  1984. dialer.sl0 file:
  1985.  
  1986. # Configuration section.
  1987. #
  1988. configure:
  1989. init "ATZ\r"
  1990. dial_cmd "ATDT"
  1991. ld_code ""
  1992. number "15108658169"
  1993. retries 5
  1994. #
  1995. # Execution section.
  1996. #
  1997. execute:
  1998. #
  1999. # Toggle DTR.
  2000. #
  2001. control down
  2002. wait 2000
  2003. control up
  2004. wait 2000
  2005. #
  2006. # Initialize the modem.
  2007. #
  2008. init
  2009. wait 3000 "OK"
  2010. #
  2011. # Dial and wait for connection.
  2012. #
  2013. dial
  2014. wait 45000 "CONNECT"
  2015. #
  2016. # Now log in.
  2017. #
  2018. wait 60000 "ogin:"
  2019. wait 1000
  2020. send "userID\r"
  2021. wait 60000 "word:"
  2022. send "password\r"
  2023.  
  2024. C-5  How do I get KA9Q to support BOOTP?
  2025.  
  2026. The CWRU NOS version has a working BOOTP client and server built-in,
  2027. and is the best version if you are looking for BOOTP support.
  2028. [Does Textwin offer full BOOTP support?]
  2029. If you are using another version of KA9Q that does not support BOOTP,
  2030. try the following: 
  2031.  
  2032. Steven L. Johnson (mailto:johnson@TIGGER.JVNC.NET) notes:
  2033.  
  2034.   KA9Q does have a bootp client but it is not compiled in by default.
  2035.   It has a bug that truncates the returned ip address to 16 bits
  2036.   which must be corrected before it will work.  It also complains
  2037.   about bootp servers that only support RFC 951 bootp without RFC
  2038.   1084 (or 1048) vendor extensions.  Other than that it seems to work
  2039.   for me.
  2040.  
  2041.   To enable the bootp client, add the following line to config.h:
  2042.  
  2043.     #define BOOTP 1
  2044.  
  2045.   To correct the ip address truncation problem, in bootp.c change:
  2046.  
  2047.                 Ip_addr = (int) reply.yiaddr.s_addr;    /* yiaddr */
  2048.                           ^^^^^problem
  2049.   at line 188 to:
  2050.  
  2051.                 Ip_addr = (int32) reply.yiaddr.s_addr;    /* yiaddr */
  2052.                           ^^^^^^^solution
  2053.  
  2054.   And of course, recompile.
  2055.  
  2056.   This worked on the src1229 (1991) version and may work on the
  2057.   most recent version.  I did check to make sure that the bug still
  2058.   exists, but I haven't rechecked whether there are additional
  2059.   problems in the new version.
  2060.  
  2061.  
  2062.  
  2063. C-6.  How do I get KA9Q to support PPP?
  2064.  
  2065. Although I haven't gotten this to work yet, there is hope. 
  2066. The only major version of KA9Q supporting PPP is the TextWin version.
  2067. Here is a sample ppp configuration file for it: 
  2068.  
  2069. # Set the host name
  2070. #
  2071. hostname aboba.slip.netcom.com
  2072. ip address [192.187.134.3]
  2073. #
  2074. #
  2075. #
  2076. # Configure COM3 on Interrupt 5, at 38400 bps with
  2077. # MTU = 1008
  2078. #
  2079. attach asy 0x3e8 5 ppp pp0 8092 1008 38400
  2080. dialer pp0 dialer.ppp
  2081. ifconfig pp0 netmask 255.255.255.252
  2082. ppp pp0 trace 2
  2083. ppp pp0 quick
  2084. ppp pp0 lcp open
  2085. ppp pp0 ipcp open
  2086. #
  2087. #
  2088. #
  2089. route add default pp0
  2090. # route all packets over pp0 by default (pp0 is the route to
  2091. # the Internet)
  2092. #
  2093. # Time To Live is the maximum number of hops a packet can take
  2094. # before it is thrown away.  This command prevents an inadvertent
  2095. # infinite loop from occuring with packets in the network.
  2096. #
  2097. ip ttl 400
  2098. #
  2099. #-------------------------------------------------
  2100. #
  2101. # The Maximum Segment Size is the largest single transmission that
  2102. # you care to receive.  An mss of 216 will force folks to send you
  2103. # packets of 256 characters or less (counting the overhead). 
  2104. #
  2105. tcp mss 1048
  2106. #
  2107. #-------------------------------------------------
  2108. #
  2109. # The Window parameter establishes the maximum number of bytes that
  2110. # may be outstanding before your system expects an ack.  If window is
  2111. # twice as big as mss, for example, there will be two active packets
  2112. # on the channel at any given time.  Large values of window provide
  2113. # improved throughput on full-duplex links, but are a problem on the
  2114. # air.  Keep mss <= window <= 2*mss if you're on the air.
  2115. #
  2116. #
  2117. tcp window 6888
  2118. #
  2119. #-------------------------------------------------
  2120. #
  2121. # This entry will open net.log in the \spool directory and will
  2122. # record the server activity of your system.  If you don't want a log,
  2123. # comment out this line; if you do, make sure you have a \spool
  2124. # directory!
  2125. #
  2126. log \spool\net.log
  2127. #
  2128. #-------------------------------------------------
  2129. #
  2130. # Each of the servers (services you will provide) must be turned
  2131. # on before they will be active.  The following entries turn all
  2132. # of them on.  To turn any function off use the command "stop" after
  2133. # NET gets fired up, or just comment out the line here.
  2134. #
  2135. start ftp
  2136. start echo
  2137. start discard
  2138. #start telnet
  2139. start smtp
  2140. #
  2141. isat on
  2142. #
  2143. domain addserver 192.100.81.101
  2144. domain addserver 192.100.81.105
  2145. smtp gateway 140.174.7.1
  2146. #
  2147. #
  2148. #  Display Name and IP Address
  2149. #
  2150. hostname
  2151. ip address
  2152. #
  2153. # THE END
  2154.  
  2155. In file dialer.ppp:
  2156.  
  2157. control down
  2158. wait 1000
  2159. control up
  2160. wait 1000
  2161. wait 2000
  2162. send "at\r"
  2163. wait 3000 "OK"
  2164. send "atdt8659004\r"
  2165. wait 60000 "login: "
  2166. send "<userID>\r"
  2167. wait 5000 "word:"
  2168. wait 1000
  2169. send "<password>\r"
  2170.  
  2171. C-7. How do I get KA9Q to support SLIP dialin?
  2172.  
  2173. If you are willing to settle for little or no security, there is not
  2174. much you have to change to allow a KA9Q system to receive calls, as
  2175. opposed to originating them. These should include:
  2176.  
  2177. 1. Setting the system to autoanswer, via use of the ATS0=1 command to
  2178. the modem. 
  2179.  
  2180. 2. Setting up a trace on the router end, to figure out if it's working,
  2181. via the command:
  2182. TRACE <interface> 1011, where <interface> = sl0 for SLIP, or another
  2183. value such as LAN or ether0 for the Ethernet interface. It's probably
  2184. a good idea to put a trace on all interfaces until the system is
  2185. shaken down. 
  2186.  
  2187. Note that without addition of a special dialing script, this setup
  2188. is completely insecure! 
  2189.  
  2190.  
  2191. C-8.  Can I use KA9Q as a packet filter? 
  2192.  
  2193. Yes! Both the TextWin Large and CWRU NOS versions support this. You can
  2194. filter by incoming or outgoing, TCP or UDP port number, IP address, SYN
  2195. bit on, etc. 
  2196.  
  2197.  
  2198. D. Hints for particular packages
  2199.  
  2200. D-1. How do I get DesQView X to run over the network?
  2201.  
  2202. V1.0 of DesQView X did not include a TCP/IP protocol stack.
  2203. Surprise! It required a TCP/IP implementation such as Beame & Whiteside,
  2204. PC-NFS, FTP's PC/TCP, or Novell LWP. They've corrected the situation 
  2205. in subsequent revisions. Contact QuarterDeck for assistance.
  2206.  
  2207. [pricing and availability, anyone?]
  2208.  
  2209. D-2. Why is NFS so slow compared with FTP?
  2210.  
  2211. NFS usually runs over RPC via UDP, rather than utilizing TCP. NFS only 
  2212. acknowledges a write request when the disk completes; there
  2213. are no sliding windows as in TCP. This makes NFS fairly inefficient.
  2214.  
  2215. Frances K. Selkirk (fks@vaxeline.ftp.com ) notes:
  2216.  
  2217. "There are NFS implementations that use TCP. They are only
  2218. faster over WANs. UDP is faster over most normally functioning LANs.
  2219. The lockstep paradigm is inherent to NFS, but some implementations
  2220. provide the ability to violate it - a speed win when the net is
  2221. reliable, a loss when it is not.
  2222.  
  2223. Whatever the transport, NFS will have more overhead than TCP, because
  2224. it is trying to transparently imitate an OS, and has to do a lot of
  2225. shuffling and translating."
  2226.  
  2227.  
  2228. D-3. Where can I get information on running NetWare and TCP/IP
  2229.       concurrently? 
  2230.       
  2231. The bit.listserv.novell group regularly posts a FAQ
  2232. which includes information on concurrent use of TCP/IP and Novell
  2233. IPX. 
  2234.  
  2235. D-4. What NetWare TCP/IP NLMs are out there and how do I get them
  2236.       to work? 
  2237.  
  2238. A public and known to work reliable TFTP and BOOTP daemon for NetWare
  2239. OS 3.1x/4.0x and NetWare/IP are available from 
  2240. file://ftp.novell.de/~/pub/netwire/unsupported/server/bootpd.exe. 
  2241. Contact: mailto:dirk@rhein-main.de
  2242.  
  2243. D-5. How do I get a telecom package supporting Int 14h redirection
  2244.       to work? 
  2245.  
  2246. INT 14 is the BIOS serial port interrupt. "Int 14h redirection" means
  2247. that Interrupt 14 is redirected to a Telnet connection to a 
  2248. particular host. This is useful because it allows a communications 
  2249. application to readily support telnet. Int 14h support is becoming 
  2250. increasing common, with vendors such as Mustang (QMODEM Pro) and
  2251. Procomm Plus for networks having included this feature. 
  2252.  
  2253. Aside from commercial stacks (such as FTP's PC/TCP),
  2254. try the TCPPORT program in WATTCP, available via 
  2255. file://dorm.rutgers.edu/pub/msdos/wattcp/apps.zip. However, I have
  2256. tried to get this to run with QMODEM Pro and found that I didn't
  2257. have enough RAM.
  2258.  
  2259. FTP's PC/TCP includes a program called tnglass that supports Int 14h
  2260. redirection.
  2261.  
  2262. D-6. How do I run SLIP/PPP with Windows For Workgroups TCP/IP?
  2263.  
  2264. Rumour has it that there is a serial NDIS driver available called
  2265. NBR11. This is available via ftp://complab.gtri.gatech.edu/pub/lanman/ndis.  
  2266.  
  2267. D-7. How do I get Windows For Workgroups to work alongside NetWare?
  2268.  
  2269. ODINSUP from Novell is an NDIS over ODI shim. This allows you to run 
  2270. software requiring ODI drivers, as well as software requiring NDIS 
  2271. drivers. Since IPX and TCP/IP are different protocols, you will not
  2272. need to run PKTMUX. 
  2273.  
  2274. Available via 
  2275. file://ftp.novell.com/netwire/novfiles/client.kit/doswin/files/WSDOS1.EXE. 
  2276.  
  2277. D-9. How come package X doesn't support the AppleTalk packet driver?
  2278.  
  2279. An AppleTalk driver is available as appletlk.com as part of the Crynwr 
  2280. driver set. NCSA Telnet 2.3.03 and NuPOP support it, but very few other
  2281. applications do, including Trumpet Winsock. This is because AppleTalk
  2282. corresponds to packet driver class 5, while most applications only
  2283. support Class 1 (Ethernet). 
  2284.  
  2285. Vendors with Windows Sockets implementations that support AppleTalk include
  2286. FTP Software's PC/TCP. WinQVT/Net's built-in TCP/IP stack version is also
  2287. rumored to be due to support AppleTalk in a future release.
  2288.  
  2289.  
  2290. D-10. NCSA Telnet doesn't reassemble fragments. What should I do?
  2291.  
  2292. Yell at the folks at NCSA to fix the problem, and to notify all
  2293. the people who are using the same TCP/IP code to insert the fix in
  2294. their software as well. This problem is really common, and
  2295. very annoying, and affects NCSA Telnet as well as PC Gopher III,
  2296. and POPmail. One possible workaround is to set the MTU to 576,
  2297. but this will not always work.
  2298.  
  2299. The following solution has been provided by Matthew T
  2300. Kaufman (mailto:matthew@echo.com):
  2301.  
  2302. How to get rid of the message:
  2303. "IP: fragmented packet received, frags not supported"
  2304. (assuming you have a C compiler and source code)
  2305. by Matthew T Kaufman
  2306.  
  2307. Many people on the net have complained that NCSA Telnet
  2308. (among other useful PC TCP/IP programs) doesn't properly handle 
  2309. fragmented IP packets. this problem becomes especially evident if 
  2310. any of your packets are arriving over SLIP connections.
  2311. I figured that the fastest way to get it to work would be to go
  2312. ahead and do it myself rather than wait for it to get to the
  2313. top of the list of desired features.
  2314.  
  2315. MANY other programs have used the NCSA TCP/IP implementation, so
  2316. if you maintain a program which does, PLEASE add this fix.
  2317. I (and MANY OTHERS) are unable to use your software until you do.
  2318.  
  2319. I posted the basic form of this fix around the beginning of the year,
  2320. but it didn't seem to make it into several subsequent versions of
  2321. related software, so I am posting and mailing this once again, in
  2322. a revised form, with helpful hints at the end.
  2323.  
  2324. I request only the following in return:
  2325.     This software revision is in the public domain. It may be
  2326.     used anywhere without further permission from the author.
  2327.     Please credit the origin of the fix in your release notes
  2328.     or bug fix document. (I am "Matthew Kaufman, matthew@echo.com")
  2329.     If you are the official maintainer of a software package
  2330.     which you have added this fix to, please send me an
  2331.     email note letting me know that the fix made it in.
  2332.     (So I don't need to worry that, for instance, the next
  2333.     version of NCSA Telnet or WinQVT/Net isn't going to
  2334.     include this) And, please add this fix as soon as possible.
  2335.  
  2336. So here's my fix:
  2337.  
  2338. The following are the changes to the NCSA Telnet TCP/IP engine to add
  2339. support for IP fragment reassembly. I also know how to make telnet compile 
  2340. properly under Borland C without running out of space in DGROUP (see the end of this)
  2341.  
  2342. if you have any questions, you can reach me at:
  2343. matthew@echo.com. I am willing to help, within the limits of my schedule.
  2344.  
  2345. changes follow:
  2346.  
  2347. file: engine\ip.c (the only file that needs to change)
  2348.  
  2349. delete the following:
  2350. >/*
  2351. >*  We cannot handle fragmented IP packets yet, return an error
  2352. >*/
  2353. >
  2354. >    if(p->i.frags &0x20) {           /* check for a fragmented packet */
  2355. >        netposterr(304);
  2356. >        return(1);
  2357. >      }
  2358.  
  2359. ----------
  2360. after the line:
  2361. >    iplen-=hlen;
  2362.  
  2363. but before the lines:
  2364. > /*
  2365. > *  check to make sure that the packet is for me.
  2366.  
  2367.  
  2368. add this:
  2369.  
  2370.     /* check for fragment and handle. note that the &0x20 above is WRONG */
  2371.     if(p->i.frags)           /* NOW check for a fragmented packet - mtk add*/
  2372.     {
  2373.     ipfraghandle(p,iplen);    /* pass in computed iplen to save time */
  2374.         return(1);
  2375.       }
  2376.  
  2377. ----------
  2378. and then, at the end of that file (ip.c) add this:
  2379.  
  2380. /*
  2381. * IP Fragment Reassembly Hack
  2382. * by Matthew T Kaufman (matthew@echo.com)
  2383. * 1/1993, 8/1993
  2384. */
  2385.  
  2386. typedef struct ipb {
  2387.         DLAYER d;
  2388.         IPLAYER i;
  2389.         uint8 data[4104];    /* "Big Enough" */
  2390. }FIPKT;
  2391.  
  2392. #define IPF_CHUNKS 513 /* 4104 / 8 */
  2393. #define IPF_BITWORDS 18  /* 513 / 32 round up + 1*/
  2394. #define IPF_BUFFERS 7  /* Max # of different fragmented pkts in transit */
  2395.  
  2396. typedef struct {
  2397.     FIPKT pkt;
  2398.     unsigned long bits[IPF_BITWORDS];
  2399.     int lastchunk;
  2400.     unsigned long lasttime;
  2401.     unsigned int iplen;
  2402. }FPBUF;
  2403.  
  2404. static FPBUF far Frag[IPF_BUFFERS];
  2405.  
  2406. ipfraghandle(IPKT *p, int iplen)
  2407. {
  2408.  
  2409.     uint16 fraginfo;
  2410.     uint16 foffset;
  2411.     uint16 iden;
  2412.     FPBUF far *buf;
  2413.     int i;
  2414.  
  2415.     fraginfo = intswap(p->i.frags);
  2416.     foffset = fraginfo & (0x1fff);
  2417. #define morefrags (fraginfo & (0x2000))
  2418.  
  2419.     iden = intswap(p->i.ident);
  2420.  
  2421. /* we already KNOW that this IS fragmented */
  2422. /* see if we can find any friends who've already arrived... */
  2423.  
  2424.     buf = (FPBUF *) 0L;
  2425.     for(i=0; i<IPF_BUFFERS; i++)
  2426.     {
  2427.         if(p->i.ident == Frag[i].pkt.i.ident)
  2428.         {
  2429.             buf = &(Frag[i]);
  2430.             goto foundfriend;
  2431.         }
  2432.     }
  2433.     /* otherwise, we must be the first one here */
  2434.     {    
  2435.         long oldtime = 0x7fffffff;
  2436.         int oldest = 0;
  2437.  
  2438.         for(i=0; i<IPF_BUFFERS; i++)
  2439.         {
  2440.             if(Frag[i].lasttime == 0)    /* unused buffer? */
  2441.             {
  2442.                 buf = &(Frag[i]);
  2443.                 goto foundempty;
  2444.             }
  2445.  
  2446.             if(Frag[i].lasttime < oldtime)    /* track LRU */
  2447.             {
  2448.                 oldtime = Frag[i].lasttime;
  2449.                 oldest = i;
  2450.             }
  2451.         }
  2452.  
  2453.         /* if we're here, we need to reuse LRU */
  2454.  
  2455.         buf = &(Frag[oldest]);
  2456.  
  2457. foundempty:    ;
  2458.         /* initialize new buffer */
  2459.         /* time will be filled in later */
  2460.  
  2461.         for(i=0; i<IPF_BITWORDS; i++) buf->bits[i] = 0L; /* reset */
  2462.         buf->lastchunk = 0;    /* reset */
  2463.         /* fill in the header with the current header */
  2464.         movmem(p,&(buf->pkt), sizeof(DLAYER) + sizeof(IPLAYER) );
  2465.     }
  2466.  
  2467.         
  2468. foundfriend: ;
  2469.  
  2470.     /* now, deal with this specific fragment... */
  2471.     /* copy data */
  2472.     movmem(&(p->x.data),&(buf->pkt.data[8 * foffset]),iplen);
  2473.     /* update rx chunks information */
  2474.     for(i=foffset; i<= (foffset+(iplen / 8)); i++)
  2475.     {
  2476.         buf->bits[i/32] |= (unsigned long) (1L<<(i % 32));
  2477.     }
  2478.  
  2479.     if(!morefrags)
  2480.     {
  2481.         /* now we can tell how long the total thing is */
  2482.         buf->iplen = (8*foffset)+iplen;
  2483.         buf->lastchunk = foffset;
  2484.             /* actually, lastchunk is more than this, but it */
  2485.             /* IS true that we only need to check through    */
  2486.             /* this foffset value to make sure everything has */
  2487.             /* arrived  -mtk */
  2488.     }
  2489.  
  2490.     /* now touch the time field, for buffer LRU */
  2491.     buf->lasttime = clock();
  2492.  
  2493.     /* check to see if there are fragments missing */
  2494.  
  2495.     if(buf->lastchunk == 0)
  2496.     {
  2497.         /* we haven't even gotten a fragment with a cleared MORE */
  2498.         /* FRAGMENTS flag, so we're missing THAT piece, at least */
  2499.         return 1;
  2500.     }
  2501.     for(i=0; i<= buf->lastchunk; i++)
  2502.     {
  2503.         /* scanning to see if we have everything */
  2504.         if(0 == ((buf->bits[i/32]) & (unsigned long)(1L<<(i % 32))) )
  2505.         {
  2506.             return 1;    /* still waiting for more */
  2507.         }
  2508.     }
  2509.  
  2510.     /*  otherwise, done waiting... use the packet we've gathered */
  2511.     /* first clear stuff from fragment buffer: */
  2512.     buf->lasttime = 0L;    /* mark as free to take */
  2513.     buf->lastchunk = 0;    /* need to do this, because we use it as flag */
  2514.     buf->pkt.i.ident = 0;    /* so we don't find this later */
  2515.     buf->pkt.i.frags = 0;    /* in case anybody above us checks */
  2516.     /* then send it on its way... */
  2517.  
  2518.     if(!comparen(nnipnum,p->i.ipdest,4)) {     /* potential non-match */
  2519.         if(comparen(nnipnum,junk,4) && p->i.protocol==PROTUDP)
  2520.             return(udpinterpret((UDPKT *)p,iplen));
  2521.         return(1);              /* drop packet */
  2522.       } /* end if */
  2523.  
  2524.        switch (buf->pkt.i.protocol) {        /* which protocol */
  2525.             case PROTUDP:
  2526.                 return(udpinterpret((UDPKT *)&(buf->pkt),buf->iplen));
  2527.         
  2528.             case PROTTCP:
  2529.                 return(tcpinterpret((TCPKT *)&(buf->pkt),buf->iplen));  
  2530.         
  2531.             case PROTICMP:
  2532.             return(icmpinterpret((ICMPKT *)&(buf->pkt),buf->iplen));
  2533.         
  2534.            default:
  2535.                netposterr(303);
  2536.                return(1);
  2537.       }
  2538.  
  2539. }
  2540.  
  2541. *** helpful hint:
  2542.  
  2543. if you run out of space in DGROUP, its because your compiler doesn't
  2544. place each 'far' data object in its own segment. To make things work,
  2545. you need to make the raw packet buffer be in its own segment.
  2546. Here's how:
  2547. in include/pcdefs.h search for:
  2548.  
  2549. -->  unsigned char far raw[17000];
  2550.  
  2551.  (the 17000 might be some other number... smaller, if someone tried to
  2552.   fix this before)
  2553.  and change to
  2554.  
  2555. -->  unsigned char far raw[17000]={0,0};    /* force into own segment */  
  2556.  
  2557.  
  2558. E. Information for developers
  2559.  
  2560. E-1. What publicly distributable TCP/IP stacks are there that I can
  2561.      use to develop my own applications?
  2562.  
  2563. In writing an application, you can use device drivers provided by
  2564. particular vendors, or you can opt for an Application Binary Interface (ABI) 
  2565. that supports multiple TCP/IP protocol stacks, such as Winsock. For a given 
  2566. version of Windows, Winsock is an ABI for both Windows 3.x and Windows NT 
  2567. (via the NT Win16 subsystem).
  2568.  
  2569. Device drivers are included with PC-NFS and Beame & Whiteside's
  2570. BW-TCP.  Free examples of ABIs are the WATTCP API, the NCSA API
  2571. (public domain), the Trumpet ABI from Peter Tattum, and the NuPOP ABI.
  2572.  
  2573. All major TCP/IP vendors have by now implemented Windows Sockets.
  2574.  
  2575. E-2. Where can I get a copy of the Windows Sockets FAQ?
  2576.  
  2577. A separate developer-oriented FAQ file about Windows Sockets created
  2578. by Mark Towfiq is available on
  2579. ftp://SunSite.UNC.EDU/pub/micro/pc-stuff/ms-windows/winsock/FAQ
  2580. and ftp://Microdyne.COM/pub/winsock/FAQ
  2581.  
  2582. An alternative source for the FAQ is ftp.microsoft.com.
  2583.  
  2584.  
  2585. ------------------------------ END OF PART 1 ------------------------
  2586.  
  2587. Please send comments to:
  2588.  
  2589. Bernard Aboba
  2590. Author of:
  2591. The Online User's Encyclopedia, Addison-Wesley, 1993
  2592. The PC-Internet Connection, Publisher's Group West, 1994 
  2593. mailto:aboba@netcom.com
  2594. WWW page: http://www.zilker.net/users/internaut/index.html
  2595.  
  2596.  
  2597.